HCL Commerce Version 9.1.12.0 or later

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.

A continuación se muestra la lista de los campos de consulta que se utilizan al buscar en cada clasificación de NLP y en cada término de sinónimo ampliado. Se añaden campos adicionales a la consulta de Elasticsearch final desde la lista de campos de consulta del perfil de búsqueda. Estos campos son configurables y se pueden actualizar mediante el endpoint de la API de REST /configuration para la propiedad del nodo del componente de ZooKeeper nlp.classification.field.mapping. Para aumentar el ámbito de búsqueda de la clasificación, podemos añadir un nuevo campo en la lista de campos separados # a través del endpoint de configuración.
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.

Los campos se pueden actualizar utilizando el endpoint de /configuration, tal y como se muestra en el ejemplo siguiente. Este proceso utiliza el método de solicitud PATCH/POST.
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" } ] } ] } } 
Note:
  1. 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.
  2. Reinicie el servicio de consulta después de añadir o actualizar la configuración.