query near examples array and solr nested-queries

examples - solr near



Preguntas anidadas de Solr subestimadas (3)

Estoy tratando de entender las consultas anidadas por solr pero estoy teniendo un problema para eliminar la sintaxis.

Tengo los siguientes dos documentos indexados (entre otros):

<doc> <str name="city">Guarulhos</str> <str name="name">Fulano Silva</str> </doc> <doc> <str name="city">Fortaleza</str> <str name="name">Fulano Cardoso Silva</str> </doc>

Si hago una consulta para q="Fulano Silva"~2&defType=edismax&qf=name&fl=score , tengo:

<doc> <float name="score">28.038431</float> <str name="city">Guarulhos</str> <str name="name">Fulano Silva</str> </doc> <doc> <float name="score">19.826164</float> <str name="city">Fortaleza</str> <str name="name">Fulano Cardoso Silva</str> </doc>

Entonces pensé que si preguntaba por:

q="Fulano Silva"~2 AND __query__="{!edismax qf=city}fortaleza" &defType=edismax&qf=name&fl=score

Daría un puntaje más grande para el segundo documento, pero en realidad obtengo un conjunto de resultados vacío con numFound = 0.

¿Qué estoy haciendo mal aquí?


Además de los comentarios anteriores, el _query_ ha _query_ como __query__ (tenga en cuenta el doble guión bajo en la segunda versión, mal escrito); Solr espera que _query_ se deletree con un guión bajo ( _ ) antes y después de la consulta de palabra, no dos.


Necesita eliminar el "=" y reemplazarlo por ":" para usar la sintaxis de consulta anidada:

q = "Fulano Silva" ~ 2 Y _query_: "{! edismax qf = city} fortaleza" y defType = edismax & qf = nombre & fl = puntaje

* Use _query_: en vez de _query_ =

Espero que esto funcione...


EDITAR: Cuando dices q= , ¿estás especificando la consulta en una URL, o es el texto después de q= poner en una aplicación o en el panel de Solr? Si estamos hablando de una URL, es posible que necesite usar la codificación porcentual para que funcione. Lo mencioné a continuación, pero dado que no he tenido noticias tuyas, pensé en reiterarlo.

¿Por qué no haces q=name:"Fulano Silva" AND city:"fortaleza" ?

Otra posibilidad: q=_query_:"{!edismax qf=''name''}Fulano Silva" AND city:"fortaleza"

Si está configurado en una consulta anidada, select?defType=edismax&q="Fulano Silva" AND _query_:"{!edismax qf=''city'' v=''fortaleza''}" debería funcionar, pero los resultados y la forma en que coincide dependerá de qué analizadores esté utilizando para consultar e indexar el name y la city . Además, si estas consultas están en su cadena de consulta, asegúrese de que las está codificando correctamente.

Para ayudarlo más, necesito saber qué está tratando de lograr con su consulta. Entonces quizás podamos estar seguros de que tiene la configuración de indexación correcta, que edismax es el manejador de consultas correcto, etc.