2012-11-29 13 views
5

Vorrei utilizzare il mio auto_index in neo4j e passare una serie di stringhe a cui confrontarsi. So che è possibile aggiungere una clausola IN alla fine della query cifrata ma che non utilizza gli indici e suppongo che eseguirà una scansione del database di tutti i record. Qual è il modo migliore per farlo con una query di indice?interrogazione con una clausola "IN" utilizzando l'indice in neo4j con Cypher

ad es. Prendi me utenti di cui facebookId è in ["123", "456", "789"] supponendo che ci sia un auto_index su FacebookId e ci sono 1 milione di nodi utente.

risposta

11

Suppongo che questo vale la pena di inviare messaggi come risposta:

START n=node:node_auto_index('facebookId:("123", "456", "789")') 
... 

Esempio: http://console.neo4j.org/r/3mcvr5

+0

grazie, questo ha fatto il trucco. – MonkeyBonkey

+0

Per la cronologia, limitato a 512 campi con l'attuale Neo 1.9.M04. (che penso usi Lucene 3.5) –

+0

Grazie, questo mi ha aiutato – jarandaf

1

faresti questa domanda facendo una ricerca indice esplicito, come

start user = node:node_auto_index('facebookId:123 OR facebookId:456') match ... 

http://console.neo4j.org/r/nj98lt per un esempio.

+0

Suppongo che sarà il lavoro, ma potrebbe diventare molto lunga se ho 20 o 30 ids a partita contro. Nessun altro modo più pulito di farlo? – MonkeyBonkey

+0

BTW dov'è la documentazione su quali operatori e parametri possono essere passati nella query dell'indice in cypher? – MonkeyBonkey

+1

La maggior parte delle cose è qui. Viene passato direttamente a Lucene per gli indici predefiniti: http://lucene.apache.org/core/old_versioned_docs/versions/3_5_0/queryparsersyntax.html#Overview –

Problemi correlati