Campos Solr personalizados
En esta lección, añadirá su propio tipo de campo Solr al archivo de configuración x-schema-field-types.xml. El nuevo campo eliminará las concatenaciones con guiones de las sugerencias de búsqueda. Por ejemplo, en lugar de sugerir "joya-bicolor" en una búsqueda de "joya", sugerirá "joya bicolor".
Si desea añadir tipos de campos Solr personalizados, puede definirlos en el archivo workspace_dir\search-config-ext\src\index\managed-solr\config\v3\common\ x-schema-field-types.xml.
Para utilizar un tipo de campo personalizado, modifique la correlación de campo y tipo de campo en el archivo search-config-ext\src\index\managed-solr\config\v3\indextype\x-schema.xml, donde indextype es: CatalogEntry, CatalogGroup, Price o Unstructured.
Si sigue este procedimiento, añadirá un nuevo tipo de campo y utilizará este tipo en el índice catalogEntry
. Añadirá un filtro de delimitador de palabras a este nuevo tipo de campo.
Procedimiento
-
Busque la cadena "joya" en el escaparate. El motor de búsqueda Solr sugerirá nombres de productos concatenados por guiones, como en el siguiente resultado:
- Copie el archivo x-schema-field-types.txt del ejemplo solrconfiguration.zip en workspace_dir\search-config-ext\src\index\managed-solr\config\v3\common\x-schema-field-type.xml.
-
Añada el siguiente texto al archivo x-schema-field-type.xml.
Las clases definidas en negrita suprimen el carácter de guión '-' de las sugerencias de búsqueda. Por ejemplo, en lugar de devolver 'a-b ', la salida puede ser 'a b'.<fieldType name="x_textSpell_en" class="solr.TextField" positionIncrementGap="100" omitNorms="true"> <analyzer type="index"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="${stopwords_en:../../../v3/common/stopwords.txt}"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" splitOnNumerics="1" preserveOriginal="0"/> <filter class="solr.ShingleFilterFactory" outputUnigrams="true" minShingleSize="2" maxShingleSize="3" tokenSeparator=" " fillerToken="" /> <filter class="solr.PatternReplaceFilterFactory" pattern="\s{2,}" replacement=" " replace="all"/> <filter class="solr.TrimFilterFactory"/> <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" splitOnNumerics="1" preserveOriginal="0"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="${stopwords_en:../../../v3/common/stopwords.txt}"/> </analyzer> </fieldType>
-
Abra el archivo workspace_dir\search-config-ext\src\index\managed-solr\config\v3\CatalogEntry\x-schema.xml. Añada un atributo de corrección ortográfica al elemento Campo como se indica a continuación.
Localice el elemento campo.
Cámbielo a leído:<field name="spellCheck" type="wc_textSpell_${lang:en}" indexed="true" stored="false" multiValued="true" />
Localice el elemento dynamicField:<field name="spellCheck" type="x_textSpell_en" indexed="true" stored="false" multiValued="true" />
Cámbielo a leído:<dynamicField name="spellCheck*" type="wc_textSpell_${lang:en}" indexed="true" stored="false" multiValued="true" />
<dynamicField name="spellCheck*" type="x_textSpell_en" indexed="true" stored="false" multiValued="true" />
- Reinicie el servidor de búsqueda de HCL Commerce.
-
Vuelva a crear el índice de búsqueda de .
El método es POST y debe incluir autorización básica en la cabecera, es decir, un ID spiuser y su correspondiente password. Para obtener más información, consulte Creación del índice de HCL Commerce Search.https://transaction_server_hostname:transaction_server_https_port/wcs/resources/admin/index/dataImport/build
Resultados
![](../images/locale/screensnap/jewel_toned.png)