Solr:如何在通过 CSV 导入时以小写形式存储特定字段的数据?
Solr: How to store data in lower case for specific field while importing by CSV?
我在 schema.xml
中有如下字段
<field name="Colour" type="string"/>
<field name="MerchantCampaignName" multiValued="false" type="string" indexed="true"/>
<field name="Name" type="text_general" indexed="true"/>
<field name="SKU" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="Size" type="string" indexed="true"/>
所以当从 CSV 导入数据时,在颜色字段中有像 "red", "Red", "Reds"
.
这样的值
在 "Colour"
字段的分面查询中,它将所有三个值视为不同。
那么是否有任何设置可以将 "Colour"
字段保存为小写以及单数和复数?
使用 KeywordTokenizerFactory
和 LowerCaseFilterFactory
相同。您已使用上述方法创建自定义字段类型并将其应用于您的字段。
keywordTokenizer
是:此标记器将整个文本字段视为单个标记。
您可以为您的字段使用以下字段类型。优点是它有助于在所有情况下搜索单词...大写和小写。
<fieldType name="lowercaseExactMatch" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
这是您的字段定义:
<field name="Colour" type="lowercaseExactMatch" indexed="true" stored="true"/>
我在 schema.xml
中有如下字段
<field name="Colour" type="string"/>
<field name="MerchantCampaignName" multiValued="false" type="string" indexed="true"/>
<field name="Name" type="text_general" indexed="true"/>
<field name="SKU" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
<field name="Size" type="string" indexed="true"/>
所以当从 CSV 导入数据时,在颜色字段中有像 "red", "Red", "Reds"
.
在 "Colour"
字段的分面查询中,它将所有三个值视为不同。
那么是否有任何设置可以将 "Colour"
字段保存为小写以及单数和复数?
使用 KeywordTokenizerFactory
和 LowerCaseFilterFactory
相同。您已使用上述方法创建自定义字段类型并将其应用于您的字段。
keywordTokenizer
是:此标记器将整个文本字段视为单个标记。
您可以为您的字段使用以下字段类型。优点是它有助于在所有情况下搜索单词...大写和小写。
<fieldType name="lowercaseExactMatch" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
这是您的字段定义:
<field name="Colour" type="lowercaseExactMatch" indexed="true" stored="true"/>