Archivo de esquema de Solr (schema.xml)
Solr organiza los datos en documentos, que constan de campos. En HCL Commerce, un documento consta de todas las descripciones de un producto.
El archivo schema.xml contiene información sobre los campos Solr y sobre cómo éstos se analizan y filtran durante las búsquedas. Diferentes tipos de campo pueden contener diferentes tipos de datos. Solr utiliza el archivo schema.xml para determinar cómo crear índices de los documentos de entrada y cómo realizar el proceso de tiempo de consulta e índice.
El archivo schema.xml contiene los siguientes campos y opciones:
Tipo de campo
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
<fieldType name="wc_text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0" preserveOriginal="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
Donde wc_text fieldType
lo procesan los analizadores, simbolizadores y filtros y se utiliza para influir en la relevancia de la búsqueda.Analizadores de texto
Los analizadores de texto correlacionan la serie de origen de texto y la lista final de señales. Este proceso se produce durante la indexación y la consulta. Puede tener diferentes cadenas de analizadores la indexación y la consulta, en función de las necesidades de negocio. Por ejemplo, EdgeNGramFilterFactory es más adecuado para la indexación, en lugar de la sección de consulta. Sin embargo, normalmente se utilizan las mismas cadenas de analizador para la indexación y las consultas, porque las búsquedas necesitan que las señales de consulta coincidan con las señales indexadas.
Distintos analizadores devuelven resultados diferentes. Por ejemplo, puede utilizar algunos analizadores para devolver el término Flash cuando se utiliza flash.
Simbolizadores
Simbolizador | Salida |
---|---|
Simbolizador estándar (standardTokenizerFactory) | O Reilly s wi fi guide |
Simbolizador de palabra clave | O'Reilly's wi-fi guide |
Simbolizador de espacio en blanco | O'Reilly's wi-fi guide |
WordDelimiterFilterFactory | o Reilly s oReillys Wi Fi WiFi guide |
Filtros
Los filtros se utilizan después de los simbolizadores para examinar una corriente de señales y mantenerlos tal cual, transformarlos o descartarlos o crear otros nuevos. Los simbolizadores y filtros pueden combinarse para formar interconexiones o cadenas, donde la salida de uno se convierte en la entrada del siguiente. Una secuencia de simbolizadores y filtros se denomina analizador y la salida resultante de un analizador se utiliza para comparar resultados de la consulta o crear índices.
snowballPorterFilterFactory se utiliza para la lematización, donde la lematización se utiliza para reducir una palabra a una forma más corta. Por ejemplo, incrementado, incrementando e incrementa tienen como raíz la palabra incremento.
Solr utiliza Porter y KStem de forma predeterminada cuando se emplea la lematización. Porter deriva la palabra a un formato de base que no tiene que ser necesariamente una palabra del diccionario. En cambio, KStem deriva la palabra a un formato de base que coincide con una palabra del diccionario. Normalmente, Porter produce más coincidencias con menos precisión.
Por ejemplo, Porter puede identificar territorial al buscar territorio (KStem no puede), pero también identifica visuales al buscar visualización (de nuevo, KStem no lo hace).
SnowballPorterFilterFactory es un algoritmo de lematización Snowball Porter que se aplicará a cada palabra (token). Es la implementación del algoritmo de lematización Porter2 (snowball). El algoritmo Porter2 presenta una leve mejora respecto al algoritmo Porter.
Los algoritmos de lematización más habituales que se utilizan son Porter, Snowball (Porter2) y Lancaster, donde Porter es el menos agresivo y Lancaster el más agresivo (algunas palabras más cortas quedarán totalmente enmascaradas después de Lancaster). Porter es el más lento y Lancaster el más rápido. Para obtener más información sobre el algoritmo snowball, consulte The English (Porter2) stemming algorithm. Porter y Porter2 derivan aproximadamente el 5% de las palabras a formas diferentes.
Salida de snowballPorterFilterFactory: o Reilli s oReilli Wi Fi WiFi guid
Campo
<field name="buyable" type="int" indexed="true" stored="true" multiValued="false"/>
<field name="mfName" type="wc_text" indexed="true" stored="true" multiValued="false"/>
- multiValued
- Cuando se establece en true, un campo puede contener tantos valores como se le asignen, separados por caracteres definidos en el archivo wc-data-config.xml.
- indexed
- Cuando se establece en true, el campo se utiliza en el índice de búsqueda y se puede utilizar para la búsqueda, la ordenación y la creación de facetas en el escaparate.
- stored
- Cuando se establece en true, el campo puede incluirse en el conjunto de resultados de búsqueda. Se utiliza para guardar permanentemente el valor de datos original de un campo, tanto si se indexa (y se utiliza para búsquedas) como si no.
<field name="categoryname" type="wc_text" indexed="true" stored="false" multiValued="true" />
A continuación, en el archivo wc-data-config.xml:
<field column="categoryname" splitBy=";" sourceColName="CATGRPNAME" />
Campos de copia
<copyField source="name" dest="name_suggest"/>
Campos dinámicos
*
). Puede utilizar prefijos y sufijos de modo que se acepte el nombre real del campo en el tiempo de ejecución. Sin embargo, se debe definir el tipo de campo. Por ejemplo, el campo dinámico siguiente acepta nombres como price_USD= "100"
o price_EUR= "120"
.
<dynamicField name="price_*" type="wc_price" indexed="true" stored="true" multiValued="false"/>
Este ejemplo es ideal, ya que puede trabajar con la API de Solr sin definir un esquema final para los datos.Clave exclusiva
Las claves exclusivas asignan una identidad exclusiva a un documento Solr específico, de forma similar a las claves primarias en las bases de datos. En el archivo schema.xml del índice CategoryEntry, uniqueKey se define como catentry_id.
Campo de búsqueda predeterminado
Este campo se utiliza cuando la solicitud no contiene un campo específico.
Operador predeterminado
- fieldName
- Simbolizado y no sensible a mayúsculas y minúsculas. Por ejemplo, mfName.
- fieldName_cs
- Simbolizado y sensible a mayúsculas y minúsculas. Por ejemplo, mfName_cs.
- fieldName_ntk
- No simbolizado y no sensible a mayúsculas y minúsculas. Por ejemplo, mfName_ntk.
- fieldName_ntk_cs
- No simbolizado y sensible a mayúsculas y minúsculas. Por ejemplo, catenttype_id_ntk_cs.
Utilice campos no simbolizados cuando desee buscar coincidencias exactas. Por ejemplo, utilice el campo no simbolizado para nombres de marca, de modo que cuando un comprador busca productos Econo Sense, aparecen productos de Econo Sense en los resultados de búsqueda, en lugar de productos de Sense.
Utilice búsquedas sensibles a las mayúsculas y minúsculas para obtener coincidencias más exactas. Por ejemplo, para campos como número de pieza.