我必须搜索ARM,Arm和Arm之类的词。是3个不同的词,例如,当我搜索ARM时,我应该只能看到ARM的结果,而看不到Arm和arm的结果。 我尝试应用过滤器,但似乎什么也没做,希望获得帮助以了解如何实现。 例如,如果我键入“ qsstresn”,我还必须搜索所有类似“ QSSTRESN”的字母,并且必须忽略结果。所以我只会看到所有大写单词的结果。
我需要有关如何做到这一点的建议。
我在自己的schema.xml中添加了
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.UpperCaseFilterFactory"/>
<filter class="solr.CapitalizationFilterFactory" onlyFirstWord="true" keep="" keepIgnoreCase="true" okPrefix="QSSTRESN"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.UpperCaseFilterFactory"/>
</analyzer>
</fieldType>
答案 0 :(得分:0)
如果要区分大小写,请删除所有小写或大写过滤器。这些过滤器将 all 个字符转换为相同的大小写,实际上消除了所有大小写的敏感性。
所以问题不在于您没有应用正确的过滤器,而是您正在应用过滤器来删除要保留的内容。
只是:
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
应该适合您想做的事。如果您还想将A.B.C
保留为单个令牌(即带有标点符号),请改用WhitespaceTokenizer。
同义词扩展仍然可以出现在查询中。