2012-02-10 21 views
6

Estoy usando PHP para captar consultas de búsqueda de usuarios y ejecutarlas a través de SOLR en un campo específico "palabra clave" que contiene esencialmente una concatenación de todos los datos del documento.DisMax para analizar las consultas de los usuarios y q o fq para filtrar los resultados

También estoy usando facetas en esta consulta para profundizar en el conjunto de resultados.

Mis preguntas:

  1. ¿Debo utilizar SOLR DisMax que analizar todas las consultas de los usuarios?
  2. ¿Se considera una mala práctica colocar las búsquedas detalladas de detalles directamente en una consulta estándar con la búsqueda por palabra clave O debería usarfilterqueries para filtrar la consulta estándar original y su resultado?

Respuesta

3

Yo usaría eDisMax, es básicamente más potente y más tolerante (significa que generalmente no devuelve errores para consultas mal formadas).

Me gustaría recomendar encarecidamente el uso de filter queries para filtrar los resultados (fq parámetros) Al hacer clic, por ejemplo, en una entrada de faceta, principalmente por estas razones:

  • consultas de filtro no influyen en la puntuación de Solr
  • consultas de filtro son más rápidos, ya que en caché independientemente de la consulta principal a través de la filter cache
2

la elección del analizador de consultas depende de sus necesidades. Should_I_use_the_standard_or_dismax_Query_Parser

Dismax/Edismax le permite consultar y aumentar en varios campos, pero tiene algunas limitaciones con el manejo de los operadores y su soporte.
Si está consultando en un solo campo, el analizador de consultas estándar puede cumplir el requisito.

Y como se menciona en @javanna Siempre debe intentar utilizar consultas de filtro en comparación con la búsqueda de las palabras clave, ya que permite filtering with cache support.

Cuestiones relacionadas