我需要以不区分大小写的方式过滤查询(fq)。 我在网上看到的所有解决方案都与编辑文件schema.xml有关。
但是,我没有这个文件,因为我使用的是模式而不是Solr(数据驱动的配置集)。
我怎样才能达到这个效果? 非常感谢!
答案 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
。