es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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:

    MATCH (org:Organización)
    WHERE org.otraPropiedad = 'un valor'
    WITH org
    CALL db.index.fulltext.queryNodes('miIndiceNombreOrg', 'algo~') YIELD node
    WHERE node = org
    RETURN node
    

    En esta consulta, primero coincidimos con todos los nodos etiquetados como Organización y los filtramos por el valor de la propiedad otraPropiedad. Luego, pasamos los nodos resultantes al procedimiento CALL db.index.fulltext.queryNodes para realizar una búsqueda difusa en sus propiedades nombre_es y nombre_fr. Finalmente, filtramos los resultados de la búsqueda difusa para devolver solo los nodos que coincidieron en la primera cláusula MATCH.

    Este enfoque puede ayudar a optimizar el rendimiento al reducir la cantidad de nodos que se buscan con el índice de texto completo.

Comments are closed.