不区分大小写搜索solr facets但需要显示实际值

时间:2015-08-06 16:24:02

标签: solr

我想在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**"
        ],

2 个答案:

答案 0 :(得分:1)

删除LowerCaseFilter或使用plain String作为字段类型。 然后对于构面搜索,您可以使用facet.contains = keyword和face.contains.ignoreCase = true。

答案 1 :(得分:0)

我的建议是有两个字段。一个有下壳,另一个没有它。然后使用小写字段进行搜索,并使用没有小写处理的字段返回构面。要节省空间,您应该只对字段编制索引。我认为你实际上不需要将它们存储为构面过滤。