Solr 不区分大小写的查询

Solr Case-insensitive Query

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

但是,我没有这个文件,因为我使用的是无架构的 Solr(数据驱动的配置集)。

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

因为您正在使用 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