cancel
Showing results for 
Search instead for 
Did you mean: 

Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.

Error: Vector() were the selected candidates from the table IDPPlanTable(numberOfPlans=7, largestSolved=3)

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?

2 REPLIES 2

ameyasoft
Graph Maven

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

Thank You for reply, but the solution doesn't work.

Described error does not depend on numbers conversion.