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
。
我需要以不区分大小写的方式过滤查询 (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
。