2016-04-14 141 views
1

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

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

我该如何还能达到这个结果? 非常感谢!

+1

这是否意味着您正在使用managed-schema.xml? –

+0

编号 非我的内核有这个文件,我只能在config-sets目录中看到这个文件(默认) – yuz

+0

你在搜索什么字段..?你知道该字段的fieldType吗? –

回答

4

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

为你的领域也*_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