Neo4J cómo llamar a db.index.fulltext.queryNodes en un subconjunto de nodos (en lugar de realizar la búsqueda en cada nodo en la base de datos)?
Tengo el siguiente modelo de datos:
(org:Organization {name_en:'Nombre de la organización en inglés', 'name_fr': 'Nombre de la organización en francés', 'anotherProperty': 'un valor'})
Configuré un índice de búsqueda de texto completo en las propiedades de nombre (name_en
y name_fr
).
Si quiero realizar una búsqueda difusa en el nombre, debo escribir lo siguiente:
CALL db.index.fulltext.queryNodes("myOrgNameIndex", 'algo~') YIELD node RETURN node
Pero siempre tengo que realizar un MATCH primero para obtener un subconjunto de nodos de organización basados en ‘anotherProperty’. Entonces, en lugar de hacer como primera operación la búsqueda difusa en todos los nodos de organización de mi base de datos (muchos…), me gustaría hacer primero un MATCH con un WHERE y luego llamar al índice de búsqueda de texto completo basado en los resultados de la ‘primera’ consulta.
¿Cómo puedo hacer eso? ¿Es incluso posible?
Desde ya, gracias por tu respuesta.
davy.ai
Sí, es posible realizar primero una búsqueda con MATCH con una cláusula WHERE y luego llamar al índice de búsqueda de texto completo basado en los resultados de la primera consulta. Aquí tienes un ejemplo de consulta en Cypher:
En esta consulta, primero coincidimos con todos los nodos etiquetados como
Organización
y los filtramos por el valor de la propiedadotraPropiedad
. Luego, pasamos los nodos resultantes al procedimientoCALL db.index.fulltext.queryNodes
para realizar una búsqueda difusa en sus propiedadesnombre_es
ynombre_fr
. Finalmente, filtramos los resultados de la búsqueda difusa para devolver solo los nodos que coincidieron en la primera cláusulaMATCH
.Este enfoque puede ayudar a optimizar el rendimiento al reducir la cantidad de nodos que se buscan con el índice de texto completo.