Componentes personalizables de la consulta Solr final
Puede personalizar los componentes de la consulta Solr final utilizando analizadores de consulta. Un analizador de consultas es un componente responsable de analizar la consulta de texto y de convertirla en los objetos de consulta Lucene correspondientes.
Consulta máxima de disyunción (Dismax), texto de disyunción (varios campos) y coincidencia máxima (puntuación), busca cada par del campo o término por separado. A continuación, combina los resultados para calcular el valor de puntuación máxima de los resultados.
ExtendedDisMax añade las siguientes características encima de Dismax:
Coincidencia mínima
ANY
, donde puede especificar cuántas de las palabras clave de búsqueda deben coincidir con los documentos indexados. Un número indica el número de palabras clave de consulta que deben coincidir. Un número formulado con un porcentaje indica que debe coincidir un porcentaje de las palabras clave de consulta. Por ejemplo:- 1 indica que al menos una palabra clave de consulta debe coincidir.
- 2<80% 6<50% indica que cuando hay menos de 3 palabras clave, ambas palabras claves deben encontrarse en el documento. Cuando hay de 3 a 6 palabras clave, el 80 % de las palabras clave deben encontrarse en el documento. Cuando hay más de 6 palabras, 50% de las palabras clave deben encontrarse en el documento.
Por ejemplo, si un comprador busca 3 palabras clave, el 80% de las 3 palabras clave es igual a 2,4. Se devuelven los resultados que coinciden al menos con 2 de las 3 palabras clave entradas, redondeados hacia abajo.
Importante: Debe utilizar la codificación de caracteres correcta cuando especifique valores de porcentaje en un archivo. Por ejemplo:- En un archivo de fragmentos JSP, como SearchSetup.jspf, el valor de porcentaje anterior se entra como está: 2<80% 6<50%.
- En un archivo wc-component.xml, como en este caso, wc-component.xml, el valor de porcentaje anterior se especifica como:
2<80% 6<50%
.
ANY
:Tipo de búsqueda | Resultados de búsqueda |
---|---|
ANY |
Busca red dress para devolver los resultados siguientes: red dress, red potato, red fish, dress shoes, dress shirt, dress belt. |
ALL o EXACT |
Se devuelven los productos con campos de búsqueda indexada que contienen red y dress, pero no blue summer dress. Se devuelve red floral dress para el tipo de búsqueda ALL , pero no para el tipo de búsqueda EXACT , porque no es una búsqueda exacta. |
- Si no necesita la coincidencia mínima, pero necesita sinónimos: Configure los sinónimos utilizando asociaciones de términos de búsqueda en el Centro de gestión. Este flujo permite que cada tienda o sitio ampliado utilice su propia lista de sinónimos.
- Si necesita la coincidencia mínima y sinónimos y tiene solo una tienda por catálogo maestro o todas las tiendas dentro del mismo catálogo maestro comparten la lista de sinónimos y no necesitan sinónimos de varias palabras o términos de sustitución, realice la tarea siguiente: Realice la siguiente tarea: Combinación de la coincidencia mínima con asociaciones de términos de búsqueda (utilizando el algoritmo de expansión Solr).
Campos de frase
pf=name^10.0 defaultSearch^1.0 categoryname^100.0 shortDescription^5.0 partNumber_ntk^15.0
Desplazamiento de frase
El desplazamiento de frase (ps) especifica hasta qué punto están lejos los términos de búsqueda indexados en el documento para influir en la relevancia. Por ejemplo, las búsquedas sports movie con ps = 1 resultados en sports movie son más relevantes que sports is the type of a movie. El desplazamiento de frase define la cantidad de desplazamiento en las consultas de frase que se crean para los campos de frase (pf). Para obtener más información, consulte Ajuste de relevancia de resultado de búsqueda de varias palabras utilizando la coincidencia mínima y el desplazamiento de frase.
- Definido en la URL.
- Definido en el perfil de búsqueda.
- Definido en el archivo de configuración de componente de catálogo (wc-component.xml) en el EAR Search.
Campos bigrama de frase
Los campos bigrama de frase (Pf2) desglosan la entrada en bigramas. Por ejemplo, the brown fox jumped
se consulta como the brown
brown fox
y fox jumped
. Por lo tanto, si la frase de búsqueda es red hat black jacket
, puede utilizar ps=0 con pf2 para asegurarse de que los productos que contienen red hats
se impulsan antes que black hats
.
Campos trigrama de frase
Los campos trigrama de frase (Pf3) desglosan la entrada en trigramas. Por ejemplo, the brown fox jumped
se consulta como the brown fox
brown fox jumped
.
Desempatador
(score of matching clause with the highest score) + ( (tie parameter) * (scores of any other matching clauses) )
El parámetro de empate configura cómo la puntuación final de la consulta está influenciada por las puntuaciones de los campos de puntuación más baja, que se comparan con el campo puntuación más alta.
El valor de empate se establece en 0.1 de forma predeterminada. Un valor de 0.0 hace que la consulta sea una consulta máxima de disyunción pura, donde solo la subconsulta de puntuación máxima contribuye a la puntuación final. Un valor de 1.0 hace que la consulta sea una consulta de suma de disyunción pura, donde la subconsulta con puntuación máxima es irrelevante y la puntuación final es la suma de las subpuntuaciones. Un valor bajo, por ejemplo, 0.1, es normalmente útil. Para obtener más información sobre cómo cambiar el valor del empate, consulte Adición de parámetros para consulta Solr nativos a expresiones de búsqueda.
Consulta de filtro
La consulta de filtro (fq) especifica una consulta que se puede utilizar para limitar los documentos que se pueden devolver, sin influir en la puntuación. Esto puede ser útil para acelerar las consultas complejas, puesto que las consultas que se han especificado con fq están en la memoria caché independientemente de la consulta principal.
Impulso de consulta
Los impulsos se pueden realizar tanto en tiempo de índice como en tiempo de consulta: Los impulsos de tiempo de índice se aplican cuando se añaden documentos y se aplican al documento entero o a campos específicos. Los impulsos de tiempo de consulta se aplican al crear una consulta de búsqueda y se aplican a campos específicos.
^
seguido de un número positivo en las cláusulas de consulta. Por ejemplo:
title:sail OR (title:sail AND title:boat)^2.0 OR title: "sail boat"^10
(*:* -title:foo)^2.0
Donde todos los documentos que no contienen foo
en el título se impulsan en 2.0.
Solr proporciona otro modo de impulsar los documentos utilizando consultas de función. FunctionQuery le permite utilizar el valor real de un campo y las funciones de esos campos en un grado de relevancia. Para obtener más información, consulte Solr Wiki: FunctionQuery.
Ejemplos
- Puede cambiar la secuencia de resultados devueltos especificando una secuencia de ordenación diferente. Por ejemplo:
sort=socre desc, price asc
. - Puede añadir un parámetro de filtro (fl) a la consulta Solr. El parámetro fl restringe los campos a devolver con el conjunto de resultados. Por ejemplo:
fl=id, title, text
limita solo las búsquedas en los campos id, title y text. - Puede modificar la lista de campos que se incluyen en la sección
<_config:result>
del perfil de búsqueda dentro del archivo wc-search.xml.Por ejemplo, para el perfil de búsqueda de IBM_findProductsBySearchTerm:Puede cambiar los valores existentes de estos parámetros en el archivo wc-search.xml. Puede crear un preprocesador nuevo para añadir un componente que se utilizará en la consulta Solr final. Para obtener más información, consulte Crear un preprocesador de consulta personalizada.<_config:result> <_config:field name="catentry_id"/> <_config:field name="storeent_id"/> <_config:field name="buyable"/> <_config:field name="partNumber_ntk"/> <_config:field name="name"/> <_config:field name="shortDescription"/> <_config:field name="thumbnail"/> <_config:field name="keyword"/> <_config:field name="mfName_ntk"/> <_config:field name="catenttype_id_ntk_cs"/> <_config:field name="price_*"/> <_config:field name="listprice_*"/> <_config:field name="parentCatgroup_id_facet"/> <_config:field name="childCatentry_id"/> <_config:field name="mfPartNumber_ntk"/> <_config:field name="ad_attribute"/> <_config:field name="isDKPreConfigured"/> <_config:field name="dkModelReference"/> <_config:field name="dkURL"/> <_config:field name="dkDefaultConfiguration"/> <_config:field name="parentDKModelRef"/> <_config:field name="dkConfigurable"/> <_config:field name="parentDKConfigurable"/> <_config:field name="startdate"/> ; <_config:field name="enddate"/> </_config:result>