![HCL Commerce Version 9.1.12.0 or later](../../base/images/91120plus.png)
Generación de consultas para Elasticsearch
Las series de búsqueda entrantes se pasan a través de un sistema de procesamiento de lenguaje natural (NLP), y las consultas se ejecutan en la clasificación NLP generada. Cuando se encuentran sinónimos, estos se procesan por separado. Comprender cómo se construyen y ejecutan las consultas le ayudará a personalizar y optimizar el sistema.
Durante una búsqueda por palabra clave, el término de búsqueda especificado pasa por el proceso de NLP, tal y como se describe en Procesamiento del lenguaje natural (PLN) en la versión 9.1. Una vez que el analizador NLP analiza el término de búsqueda en el servicio de consulta, la consulta de búsqueda principal se genera basándose en las clasificaciones. En el caso de la ampliación de sinónimos, los términos ampliados no pasan por el analizador NLP. Todas las palabras clave separadas por comas de los sinónimos se añaden a la cláusula SHOULD de la consulta de Elasticsearch generada con una condición de coincidencia mínima de should
igual a 1.
Una vez que el término de búsqueda se ha analizado por completo, cada clasificación de NLP obtiene su propia lista de palabras clave analizadas. Se genera una consulta de Elasticsearch de cada palabra clave de la lista y se añade a la cláusula MUST de la consulta. La excepción es la clasificación de adjetivos. Los adjetivos se añaden a la cláusula SHOULD con la coincidencia de = 2<70%
mínima, should
(configuración predeterminada). Aquí, 2<70%
significa que se requieren de 1 a 2 cláusulas de should
, pero para más de tres cláusulas son necesarias el 70 %.
En el caso de los sinónimos, si un término de búsqueda parcial cumple los requisitos para ampliar los sinónimos, los términos de búsqueda restantes se analizarán a través del proceso NLP y, basándose en la clasificación, la consulta se genera con una cláusula MUST para los términos analizados por NLP y una cláusula SHOULD para los términos de los sinónimos ampliados. Si algo se identifica como un adjetivo en este caso, ya no se añadirá ninguna consulta de adjetivo a la cláusula SHOULD junto con sinónimos; esta vez la consulta del adjetivo se añadirá a la cláusula MUST
En el caso de las búsquedas de nombres de marcas, se produce una coincidencia exacta después de la lematización en el nombre de la marca, y los campos de consulta se utilizarán en la lista de campos siguiente para la clasificación del nombre de la marca. Junto con el nombre de marca, si está disponible cualquier otra clasificación que contenga una lista de palabras clave, se genera una consulta de nombres de marca para la búsqueda exacta de nombres de marca más cada señal derivada del ámbito del nombre de marca, y el campo de consulta aumentará con los campos de clasificación de NOUN.
NOUN=natural.nouns.normalized, natural.nouns.raw CATEGORY=natural.categories.normalized, natural.categories.raw, natural.nouns.raw, natural.nouns.normalized BRAND_NAME=natural.names.normalized, natural.names.raw ADJECTIVES=natural.adjectives.normalized, natural.adjectives.raw, natural.nouns.raw, natural.nouns.normalized ADJECTIVES_NAME=attribute.name.normalized, attribute.name.raw, natural.nouns.raw, natural.nouns.normalized UNIT_OF_MEASURE_DEFAULT_FIELD=attribute.value.raw, natural.nouns.raw, natural.nouns.normalized STA_QUERY_FIELD=natural.nouns.normalized, natural.nouns.raw ROOT_BOOSTING_FIELD=nlp.name.normalized, nlp.keyword.text
Los campos de ROOT_BOOSTING_FIELD se utilizan únicamente para arrancar. No forman parte del campo de consulta real. El prefijo nlp. es solo para uso interno de HCL; el nombre del campo real se produce después de nlp.
PATCH/POST http://dataQueryHost:dataQueryPort/search/resources/api/v2/configuration?nodeName=component&envType=auth
Cuerpo de la solicitud: { "extendedconfiguration": { "configgrouping": [ { "name": "SearchConfiguration", "property": [ { "name": "nlp.classification.field.mapping", "value": "NOUN=natural.nouns.normalized#natural.nouns.raw, CATEGORY=natural.categories.normalized#natural.categories.raw#natural.nouns.raw#natural.nouns.normalized, BRAND_NAME=natural.names.normalized#natural.names.raw, ADJECTIVES=natural.adjectives.normalized#natural.adjectives.raw#natural.nouns.raw#natural.nouns.normalized, ADJECTIVES_NAME=attribute.name.normalized#attribute.name.raw#natural.nouns.raw#natural.nouns.normalized, UNIT_OF_MEASURE_DEFAULT_FIELD=attribute.value.raw#natural.nouns.raw#natural.nouns.normalized, STA_QUERY_FIELD=natural.nouns.normalized#natural.nouns.raw, ROOT_BOOSTING_FIELD=nlp.name.normalized#nlp.keyword.text" } ] } ] } }
- Si es la primera vez que añade la configuración a través del endpoint /configuration, utilice el método de solicitud POST; de lo contrario, utilice el método de solicitud PATCH.
- Reinicie el servicio de consulta después de añadir o actualizar la configuración.