Solr不区分大小写的查询

时间:2016-04-14 12:46:52

标签: java spring solr solrj

我需要以不区分大小写的方式过滤查询(fq)。 我在网上看到的所有解决方案都与编辑文件schema.xml有关。

但是,我没有这个文件,因为我使用的是模式而不是Solr(数据驱动的配置集)。

我怎样才能达到这个效果? 非常感谢!

1 个答案:

答案 0 :(得分:4)

当您使用dynamicField中定义的managed-schema file时。 您正在使用模式

因为您的字段也以*_ss格式结束为name_ss。 在这里,当您看到字段*_ss具有类型字符串时,这些字符串不会被分析,也不会按原样编入索引。

我建议你在dynamicField下面使用

<dynamicField name="*_txt" type="text_general" indexed="true" stored="true"/>

此处text_general类型在managed-schema文件

中构建如下
 <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
        <charFilter class="solr.PatternReplaceCharFilterFactory"
         pattern="-" replacement=""/>
        <charFilter class="solr.PatternReplaceCharFilterFactory"
         pattern="." replacement=""/>
   </analyzer>
   <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
   </analyzer>
</fieldType>

因此,您将该字段设为name_txt