Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
08-09-2019 01:20 AM
We use the Neo4j 3.5.7 database, Browser 3.2.20. Plugins: apoc-3.5.0.4, graphAlgoritms, sqljdbc42.
We have a problem with the error:
Neo.DatabaseError.General.UnknownError: Found no solution for block with size 0,
Vector() were the selected candidates from the table IDPPlanTable(numberOfPlans=7, largestSolved=3)
The error occurs at different times and often a simple modification of the query is enough to appear.
The same error occurs also in Neo4J 3.5.8 version.
For example, this query works fine:
//sklep podobny na podstawie % podobnych cech
MATCH (sklep:sklep{sklep_idx_master:124})-[:SKLEP_CECHA|:SKLEP_KLASTER]->(a)<-[:SKLEP_CECHA|:SKLEP_KLASTER]-(sklep_podobny:sklep)
MATCH (sklep)-[:SKLEP_CECHA|:SKLEP_KLASTER]->(b)
WITH sklep, sklep_podobny, COUNT(DISTINCT b) AS liczba_wszystkich_cech
MATCH (sklep)-[:SKLEP_CECHA|:SKLEP_KLASTER]->(c)<-[:SKLEP_CECHA|:SKLEP_KLASTER]-(sklep_podobny)
WITH sklep, sklep_podobny, liczba_wszystkich_cech, COUNT(DISTINCT c) AS liczba_cech_podobnych
WHERE
ID(sklep) < ID(sklep_podobny) AND
tofloat( liczba_cech_podobnych) / liczba_wszystkich_cech > 0.7
//dodatkowo na podstawie gminy o podobnym zaludnieniu wsrod mezczyzn
MATCH (sklep)-[:SKLEP_CECHA]->(g1:gmina)-[:BDL_GMINA_CECHA]->(sklep_gmina_populacja_mez:bdl_gmina_populacja_mezczyzni)
MATCH (sklep_podobny)-[:SKLEP_CECHA]->(g2:gmina)-[:BDL_GMINA_CECHA]->(sklep_podobny_gmina_populacja_mez:bdl_gmina_populacja_mezczyzni)
WHERE sklep_podobny_gmina_populacja_mez.bdl_gmina_populacja_mezczyzni > sklep_gmina_populacja_mez.bdl_gmina_populacja_mezczyzni - 1000 AND
sklep_podobny_gmina_populacja_mez.bdl_gmina_populacja_mezczyzni < sklep_gmina_populacja_mez.bdl_gmina_populacja_mezczyzni + 1000
//dodatkowo na podstawie powiatu o podobnym dochodzie
MATCH (sklep)-[:SKLEP_CECHA]->(gmi1:gmina)-[:GMINA_W_POWIECIE]->(pow1:powiat)-[:BDL_POWIAT_CECHA]->(pow_wyn:bdl_powiat_wynagrodzenie)
MATCH (sklep_podobny)-[:SKLEP_CECHA]->(gmi2:gmina)-[:GMINA_W_POWIECIE]->(pow2:powiat)-[:BDL_POWIAT_CECHA]->(s_podob_pow_wyn:bdl_powiat_wynagrodzenie)
WHERE s_podob_pow_wyn.bdl_powiat_wynagrodzenie > pow_wyn.bdl_powiat_wynagrodzenie - 100 AND
s_podob_pow_wyn.bdl_powiat_wynagrodzenie < pow_wyn.bdl_powiat_wynagrodzenie + 100
//dodatkowo na podstawie % sprzedawanych identycznych produktow w kontekscie calej kartoteki
MATCH (sklep)-[:KUPUJE]->(o1:odsprzedaz)-[:ZAWIERA_PRODUKT]->(p1)<-[:ZAWIERA_PRODUKT]-(o2:odsprzedaz)<-[:KUPUJE]-(sklep_podobny)
MATCH (sklep)-[:KUPUJE]->(o3:odsprzedaz)-[:ZAWIERA_PRODUKT]->(p2)
WITH sklep, sklep_podobny, liczba_wszystkich_cech, liczba_cech_podobnych, sklep_gmina_populacja_mez, sklep_podobny_gmina_populacja_mez, pow_wyn, s_podob_pow_wyn, g2, pow2,
COUNT(DISTINCT p1) AS liczba_p_kupowanych_wspolnie, COUNT(DISTINCT p2) AS liczba_p_kupowanych_przez_s
WHERE
tofloat( liczba_p_kupowanych_wspolnie) / liczba_p_kupowanych_przez_s > 0.6
//produkty, których ja nie kupuję, a kupuja sklepy podobne
MATCH (sklep)-[:KUPUJE]->(o4:odsprzedaz)-[:ZAWIERA_PRODUKT]->(p3)
WITH sklep, sklep_podobny, liczba_wszystkich_cech, liczba_cech_podobnych, sklep_gmina_populacja_mez, sklep_podobny_gmina_populacja_mez, pow_wyn, s_podob_pow_wyn, g2, pow2, liczba_p_kupowanych_wspolnie, liczba_p_kupowanych_przez_s, COLLECT(DISTINCT p3.produkt_producenta_idx) AS excluded
MATCH (sklep)-[:KUPUJE]->(o4:odsprzedaz)-[:ZAWIERA_PRODUKT]->(p3)<-[:ZAWIERA_PRODUKT]-(o5:odsprzedaz)<-[:KUPUJE]-(sklep_podobny)-[:KUPUJE]->(o6:odsprzedaz)-[z:ZAWIERA_PRODUKT]->(p4)
WITH sklep, sklep_podobny, liczba_wszystkich_cech, liczba_cech_podobnych, sklep_gmina_populacja_mez, sklep_podobny_gmina_populacja_mez, pow_wyn, s_podob_pow_wyn, g2, pow2, liczba_p_kupowanych_wspolnie, liczba_p_kupowanych_przez_s, excluded, p4, COLLECT(DISTINCT p4.produkt_producenta_idx) AS recommended
WHERE NONE (p4 IN recommended WHERE p4 IN excluded)
//dodatkowo wez tylko produkty, ktore stanowia co najmniej 2 % sprzedazy u tego klienta
MATCH (sklep_podobny)-[:KUPUJE]->(o6)-[z]->(p4)
WITH sklep, sklep_podobny, liczba_wszystkich_cech, liczba_cech_podobnych, sklep_gmina_populacja_mez, sklep_podobny_gmina_populacja_mez, pow_wyn, s_podob_pow_wyn, g2, pow2, liczba_p_kupowanych_wspolnie, liczba_p_kupowanych_przez_s, excluded, p4, recommended, sum(toFloat(z.odsprzedaz_wartosc_wg_producenta)) AS wartosc
MATCH (sklep_podobny)-[:KUPUJE]->(o6)-[z]->()
WITH sklep, sklep_podobny, liczba_wszystkich_cech, liczba_cech_podobnych, sklep_gmina_populacja_mez, sklep_podobny_gmina_populacja_mez, pow_wyn, s_podob_pow_wyn, g2, pow2, liczba_p_kupowanych_wspolnie, liczba_p_kupowanych_przez_s, excluded, p4, recommended, wartosc, sum(toFloat(z.odsprzedaz_wartosc_wg_producenta)) AS wartosc_klient_total
WHERE wartosc/wartosc_klient_total> 0.02
RETURN
sklep
, sklep_podobny
, liczba_cech_podobnych
, liczba_wszystkich_cech
, liczba_p_kupowanych_przez_s as liczba_sku_kupowanych_przez_sklep_A
, liczba_p_kupowanych_wspolnie as liczba_sku_kupowanych_wspolnie_przez_podobne_sklepy
, sklep_gmina_populacja_mez.bdl_gmina_populacja_mezczyzni as gmina_popul_mez_sklep_A
, sklep_podobny_gmina_populacja_mez.bdl_gmina_populacja_mezczyzni as skl_podob_gmina_popul_mez
, pow_wyn.bdl_powiat_wynagrodzenie as bdl_powiat_wynagrodzenie_sklep_A
, s_podob_pow_wyn.bdl_powiat_wynagrodzenie as bdl_powiat_wynagrodzenie_sklep_podobny
, p4 as produkt_rekomendowany
, wartosc as wartosc_sprzedazy_produktu_reko_u_klienta_podobnego
, wartosc/wartosc_klient_total * 100 as procent_sprzedazy_produktu_reko_u_klienta_podobnego
, apoc.create.vRelationship(sklep_podobny,'KUPIL',{wartosc:wartosc},p4) as rel
//, apoc.create.vRelationship(sklep,'JEST PODOBNY',{liczba_cech_podobnych:liczba_cech_podobnych},sklep_podobny) as rel2
ORDER BY procent_sprzedazy_produktu_reko_u_klienta_podobnego DESC LIMIT 10
and when we change line
tofloat( liczba_cech_podobnych) / liczba_wszystkich_cech > 0.7
to
tofloat( liczba_cech_podobnych) / liczba_wszystkich_cech > 0.75
or just add one more space after > like this
tofloat( liczba_cech_podobnych) / liczba_wszystkich_cech > 0.7
we get
Neo.DatabaseError.General.UnknownError: Found no solution for block with size 0,
Vector() were the selected candidates from the table IDPPlanTable(numberOfPlans=7, largestSolved=3)
Do You have any idea what can be the reason of that problem?
08-11-2019 03:17 PM
Try this:
tofloat( liczba_cech_podobnych) / tofloat(liczba_wszystkich_cech) > 0.7
tofloat( liczba_cech_podobnych) / tofloat(liczba_wszystkich_cech) > 0.75
tofloat( liczba_cech_podobnych) / tofloat(liczba_wszystkich_cech) > 0.7
08-12-2019 05:08 AM
Thank You for reply, but the solution doesn't work.
Described error does not depend on numbers conversion.
All the sessions of the conference are now available online