我想在solr中对facet进行不区分大小写的搜索.Below是我的facet字段和字段类型声明。
// stored = true获取实际值
<fieldType name="c_text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<dynamicField name="facet_*" type="c_text" multiValued="true" indexed="true" stored="true" omitNorms="true"/>
查询得到了正确解析,并且显示的文档值实际上是在实际情况下,但在facet结果名称中只显示小写,如下所示。
facet_color_family: {
**blue**: 41,
navy blue: 7
}
索引前的实际值是Blue和Navy Blue。请注意,当它们在文档中显示时,值如下所示。
"facet_color_family": [
"**Blue**"
],
答案 0 :(得分:1)
删除LowerCaseFilter或使用plain String作为字段类型。 然后对于构面搜索,您可以使用facet.contains = keyword和face.contains.ignoreCase = true。
答案 1 :(得分:0)
我的建议是有两个字段。一个有下壳,另一个没有它。然后使用小写字段进行搜索,并使用没有小写处理的字段返回构面。要节省空间,您应该只对字段编制索引。我认为你实际上不需要将它们存储为构面过滤。