我正在Solr 6.41中使用
WordDelimiterFilterFactory
为了搜索包含点的字符串而不在查询中出现蜂鸣声。
“ 00120123”(返回结果也为001.20.123)
问题在于,该字段还提供了一个faceette,现在可以显示令牌,而不是整个字段。
令牌是在字段类型text_wd中生成的:
<fieldType name="text_wd" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" catenateAll="1" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="refnumber" type="text_wd" indexed="true" stored="true" required="false" />
包含令牌的单据:
001 (1324)
20 (909)
123 (480)
所需的刻面:
001.20.123
我如何保持所需的功能,同时又使令牌中没有令牌?
答案 0 :(得分:1)
为各个方面使用一个单独的字段。 Facets使用基础令牌结构生成值,并且必须将字段保留为单个值才能获得所需的方面。
使用具有StrField类型的类型的单独字段,然后使用copyField指令将内容从refnumber
移动到该字段中。
<field name="refnumber" type="text_wd" indexed="true" stored="true" required="false" />
<field name="refnumber_facet" type="string" indexed="true" stored="false" required="false" />
<copyField source="refnumber" dest="refnumber_facet" />