tutorial guide example solr

guide - solr y consulta en mĂșltiples campos



solr vs elasticsearch (4)

¿Es posible buscar solr en dos campos usando dos palabras diferentes y obtener solo los resultados que contienen ambos?

Por ejemplo, si tengo los campos "tipo" y "ubicación", solo quiero aquellos resultados que tengan type = ''furniture'' y location = ''office'' en ellos.


También puede usar la función boostQuery en el controlador dismaxRequest como

type=dismax&bq=type:furniture AND location:office


Puede usar operadores booleanos y buscar en campos individuales.

q=type:furniture AND location:office

Si los valores son fijos, es mejor utilizar las consultas de filtro para el rendimiento.

fq=type:furniture AND location:office


fq=type:furniture AND location:office

En lugar de usar AND, esto también podría dividirse en dos consultas de filtro.

fq=type:furniture fq=location:office


Las soluciones sugeridas tienen el inconveniente de que debes preocuparte por escapar de los caracteres especiales. Si el usuario busca "type: d''or AND location: coffee break", la consulta fallará.

Sugiero combinar dos manejadores edismax:

<requestHandler name="/combine" class="solr.SearchHandler" default="false"> <lst name="invariants"> <str name="q"> (_query_:"{!edismax qf=''type'' v=$uq1}" AND _query_:"{!edismax qf=''location'' v=$uq2}") </str> </lst> </requestHandler>

Llame al controlador de solicitudes de esta manera:

http://localhost:8983/solr/collection1/combine?uq1=furniture&uq2=office

Explicación

  • Las variables $ uq1 y $ uq2 serán reemplazadas por los parámetros de solicitud uq1 y uq2.
  • El resultado de la primera consulta edismax (uq1) se combina mediante AND lógico con la segunda consulta edismax (uq2)

Solr Docs

https://wiki.apache.org/solr/LocalParams