我在Solr中配置了一个字段,如下所示。当我搜索“护发素”这个词时,我希望找到包含“调节”的单词。但是基于Solr分析,porterstemfilter在索引时将“调节”一词切换为“Condit”。因此,在搜索时,当我查询“调节器”时,它被称为“条件”,因此不匹配“调节”。
如何配置干扰,以便调节剂和调理都应该干预?
<fieldType name="text_general" class="solr.TextField"
positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1"
catenateWords="1" catenateNumbers="1" catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1"
catenateWords="0" catenateNumbers="0" catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
答案 0 :(得分:3)
我还建议尝试不同的Stemmer。 Solr中包含4个
每个都会针对您的问题产生不同的结果,请参阅下文。鉴于结果并且您不需要外部资源,我也会选择KStem。如果你不想加入字典,我会选择hunspell。
答案 1 :(得分:1)