2017-01-04 3 views
1

J'ai une question sur la recherche en texte intégral en utilisant neo4j. Suivi les instructions sur la page Web, j'ai activé la recherche en texte intégral.Recherche Fulltext in Neo4j

Full Text Search Guide

CREATE (p: place {nom: "Chicago"})

1) Run the command: START n=node:node_auto_index("name:*C*") RETURN n; 
Result: 
+------------------------------+ 
| n       | 
+------------------------------+ 
| Node[65263]{name:"Chicago"} | 
+------------------------------+ 
1 rows 

2) Run the command: START n=node:node_auto_index("name:Chicago") RETURN n; 
Result: 
+---+ 
| n | 
+---+ 
+---+ 
0 row 

3) START n=node:node_auto_index("name=Chicago") RETURN n; 
Result: 
null 

Ma question est la suivante: Comment modifier la recherche (2) DÉBUT n = nœud: node_auto_index ("nom : Chicago ") RETOUR n; pour donner le résultat Chicago?

De même, ne spécifierions-nous pas le nom du champ dans la commande (c'est-à-dire rechercher tous les champs contenant le mot-clé "Chicago" dans tous les nœuds)?

Merci.

Répondre

0

Vous pouvez utiliser des index de schéma pour des correspondances exactes.

CREATE INDEX ON :Place(name)

Pour plus d'informations voir http://neo4j.com/docs/developer-manual/current/cypher/schema/index/

Si vous, pour une raison quelconque, avez encore besoin de faire une correspondance exacte essayer cette syntaxe:

START n=node:node_auto_index(name="Chicago") RETURN n;

+0

Désolé, ne peut toujours pas le résultat quand exécuter cette syntaxe START n = nœud: node_auto_index (name = "Chicago") RETURN n; Même si je n'exécute aucun résultat (ie recherche le mot commençant par C) START n = node: node_auto_index ("name: C * ") RETURN n; – anthonywong

+0

Quelle est la sortie de la commande' index --get-config node_auto_index' (dans neo4j-shell)? Avez-vous créé l'index après avoir ajouté les données? Vous devrez peut-être réindexer les propriétés par exemple . par 'MATCH (p: Lieu) WHERE EXISTS (p.name) SET p.name = p.nom'. –

+0

Merci, il peut rechercher des mots exacts après reindex. Cependant, il ne peut toujours pas rechercher les mots commencent par Ch (c'est-à-dire, START n = nœud: node_auto_index ("name: ch *") RETURN n;). Ou je devrais utiliser la syntaxe "Démarrer avec" à la place? – anthonywong

0

Pouvez-vous essayer comme ce ? Exact match Chicago - START n = noeud: noeud_auto_index ('(nom: (Chicago))') RETURN n;

correspondre tous les nœuds avec propriété de nom contenant Chicago - DEPART n = nœud: node_auto_index ('(nom :(Chicago)') RETOUR n;