Personalización del archivo stopwords.txt

En esta lección, editará los archivos de configuración para influir en el comportamiento del motor de búsqueda Solr 7.3.1. El ejemplo concreto es la personalización del archivo stopwords.txt.

El archivo stopwords.txt es un archivo de configuración que lista las palabras utilizadas por el filtro de detención Solr. En HCL Commerce Versión 9, puede cambiar el comportamiento del filtro de detención señalando el motor en su propio archivo stopwords.txt.

En la siguiente guía de aprendizaje, personalizará el archivo stopwords.txt en inglés y comprobará que ha cambiado satisfactoriamente el comportamiento del motor de búsqueda Solr.

Antes de empezar

  1. Asegúrese de que está trabajando con la versión correcta del archivo stopwords.txt. El archivo predeterminado es solrhom/v3/CatalogEntry/conf/stopwords.txt, pero es posible que se haya ampliado, tal como se describe en Limitación de términos y caracteres de búsqueda de la consulta de búsqueda. Localice el archivo ampliado o cree uno nuevo para trabajar en él.
    Para asegurarse de que el sistema hace referencia al archivo predeterminado stopwords.txt o a su equivalente ampliado:
    1. Determine cuál es el contenido del campo name en el archivo predeterminado solrhome/v3-index/CatalogGroup/conf/schema.xml o el archivo ampliado solrhome/v3-index-ext/CatalogGroup/x-schema.xml. Busque una definición similar a la siguiente:
      <field name="name" type="wc_text_${lang:en}" indexed="true" stored="true" multiValued="false"/>
    2. En este ejemplo, el código de idioma en se ha asignado a name. Este código de idioma se utilizará como parte de la referencia al archivo stopwords.txt, lo que lo denomina stopwords_en. Puede consultar la vía de acceso con la que está asociado este nombre al buscar el archivo solrhome/v3/common/schema-field-types.xml. Busque el destino del filtro solr.StopFilterFactory. Se parecerá a lo siguiente:
      <filter class="solr.StopFilterFactory" ignoreCase="true" words="${stopwords_en:../../common/stopwords.txt}"/>
      En este caso, el nombre de stopwords_en se ha asociado con ../../common/stopwords.txt. Si stopwords_en no especifica lo contrario en SCHCONFIG, será el archivo predeterminado.
  2. Añada el parámetro stopwords=stopwords_file_path a la columna CONFIG de la tabla de base de datos SRCHCONFEXT, donde stopwords_file_path es la vía de acceso del archivo stopwords.txt personalizado. En el entorno de contenedor, debe utilizar un mandato SQL similar al siguiente:
    update SRCHCONFEXT set CONFIG='stopwords=/opt/WebSphere/Liberty/usr/servers/default/resources/search/index/managed-solr/config/v3-index-ext/common/stopwords.txt, original_config' 
    where indextype='CatalogEntry' and indexscope=masterCatalogId and indexsubtype='Structured';
    
    Donde el resaltado original_config es el valor de configuración original para el registro, y masterCalatogId debe cambiarse por su propio catalogId maestro.
  3. Puede añadir palabras de detención para idiomas específicos. Para hacer que un archivo stopwords.txt sea específico del idioma, añada la línea stopwords_lang = stopwords_lang_file_path a la columna CONFIG de la tabla SRCHCONFEXT, donde lang es el código de idioma. Por ejemplo, si desea añadir sus propia palabras frecuentes en francés, añada la línea stopwords_fr=stopwords_fr_file_path a la columna CONFIG de la tabla SRCHCONFEXT, donde stopwords_fr_file_path es la vía de acceso del archivo de palabras frecuentes en francés.

Procedimiento

  1. En el escaparate, busque la cadena "can". Verá un resultado similar al siguiente:


  2. Copie el archivo solrhome/MC_masterCatalogID/locale/CatalogEntry/conf/stopwords.txt en el directorio workspace_dir\search-config-ext\src\index\managed-solr\config\v3\common. Abra el archivo en un editor.
  3. El archivo contiene palabras como "will" y "was" que ayudan a filtrar las cláusulas que no son útiles en las consultas de búsqueda. Como ejemplo que será fácil de probar, añada la palabra "can" en la parte inferior del archivo. Si ha copiado el archivo predeterminado, el resultado debería ser parecido al siguiente:
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    # Licensed to the Apache Software Foundation (ASF) under one or more
    # contributor license agreements.  See the NOTICE file distributed with
    # this work for additional information regarding copyright ownership.
    # The ASF licenses this file to You under the Apache License, Version 2.0
    # (the "License"); you may not use this file except in compliance with
    # the License.  You may obtain a copy of the License at
    #
    #     http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    # a couple of test stopwords to test that the words are really being
    # configured from this file:
    stopworda
    stopwordb
    
    # Standard english stop words taken from Lucene's StopAnalyzer
    a
    an
    and
    are
    as
    at
    be
    but
    by
    for
    if
    in
    into
    is
    it
    no
    not
    of
    on
    or
    such
    that
    the
    their
    then
    there
    these
    they
    this
    to
    was
    will
    with
    can
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    
  4. Añada el valor stopwords=stopwords_file_path a la columna CONFIG de la tabla de base de datos SRCHCONFEXT, donde stopwords_file_path es la vía de acceso relativa al archivo de descubrimiento en el contenedor. El siguiente mandato insertará los datos.
    sql: update SRCHCONFEXT set CONFIG=stopwords=workspace_dir\search-config-ext\src\index\managed-solr\config\v3\common\stopwords.txt, original_config 
    where srchconfext_id=1;
  5. Reinicie el servidor de búsqueda de HCL Commerce.

Resultados

Busque de nuevo la cadena "can" en el escaparate. La búsqueda no devolverá ningún resultado.