c# neo4j cypher neo4jclient

c# - Trabajando con índice en Neo4j



cypher neo4jclient (2)

Solo para expandir la respuesta de ulkas, si desea habilitar la indexación automática y la documentación es un poco confusa (como lo hice la primera vez que la leí), así es como la configuró.

Digamos que quiere indexar automáticamente algunas propiedades de nodo; decir, "nombre" y "trabajo". Abra el archivo /conf/neo4j.properties y debería ver algo como esto:

# Autoindexing # Enable auto-indexing for nodes, default is false #node_auto_indexing=true # The node property keys to be auto-indexed, if enabled #node_keys_indexable=name,age

Luego debe editar el archivo a lo siguiente:

# Autoindexing # Enable auto-indexing for nodes, default is false node_auto_indexing=true # The node property keys to be auto-indexed, if enabled node_keys_indexable=name,job

Una vez hecho esto, para que la indexación automática surta efecto, deberá reiniciar neo4j. Además, como nota al margen, los nodos existentes actualmente no se indexarán automáticamente, lo que significa que tendrá que volver a crearlos. Si no quiere comenzar de cero, aquí hay documentación sobre cómo actualizarlos: http://docs.neo4j.org/chunked/milestone/auto-indexing.html#auto-indexing-update-removal (I '' nunca lo intenté).

Entonces puedes comenzar a encontrar nodos como este:

start n=node:node_auto_index(name="Dovakiin"), or start n=node:node_auto_index(job="Dragon Slayer")

O, como este con el cliente C #:

Node<User> myNode = client.QueryIndex<User>("node_auto_index", IndexFor.Node, "name:Dovakiin").First();, or Node<User> myNode = client.QueryIndex<User>("node_auto_index", IndexFor.Node, "job:Dragon Slayer").First();

También puede hacer lo mismo con las relaciones, tan pronto como lo configure en el archivo /conf/neo4j.properties. Lo haces exactamente de la misma manera que con los nodos.

He estado revisando el cliente Neo4J y Neo4J C #.

El wiki neo4jclient me ayudó con las operaciones crud de nodos ... sin embargo, el wiki termina abruptamente ... Busqué los métodos de prueba en el código fuente y logré entender sobre las relaciones y búsquedas en línea para entender cómo funciona la indexación.

Hasta ahora, esto es lo que tengo, aproximadamente:

//create indexing on user and car client.CreateIndex("User", new IndexConfiguration() { Provider = IndexProvider.lucene, Type = IndexType.fulltext }, IndexFor.Node); client.CreateIndex("Car", new IndexConfiguration() { Provider = IndexProvider.lucene, Type = IndexType.fulltext }, IndexFor.Node); //create user client.Create(new User() { Name = "Dovakiin", Job = "Dragon Slayer" }); client.Create(new User() { Name = "Ulfric stormcloak", Job = "Imperial Slayer" }); //create Car client.Create(new Car() { Name = "Paarthurnax", Modal = 212 }); //User owns car relationship client.CreateRelationship(userRef, new Owns_CarRelationship(CarRef));

Aquí es donde estoy estancado ahora. Cuando trato de buscar al usuario por su nombre, mi consulta de cifrado está devolviendo cero resultados:

start u=node:User(Name="Dovakiin") return u;

y no entiendo muy bien por qué devuelve cero nodos cuando claramente

start n=node(*) return n;

muestra todos los nodos

¿Me estoy perdiendo algo más al indexar? ¿O esto no está relacionado con el índice en absoluto? ¿No necesito agregar cada nodo al índice?

Todo lo que intento hacer es seleccionar el nodo con una propiedad determinada: Name = "Dovakiin" en este caso ... ¿Cómo selecciono esto por favor?


debe agregar manualmente los nodos al índice, algo así como

client.indexRef1.addToIndex(nodeRef, ''name'', ''Dovakiin'') client.indexRef2.addToIndex(nodeRef, ''job'', ''Dragon Slayer'')

también hay una función de indexación automática en neo4j en caso de que desee que los nodos se agreguen automáticamente al índice.