我是solr的新手,我有一个问题。我的原始字符串是“crohn's”,当我输入类似“crohn's”的东西时,它返回正常,而且当我输入类似“crohn”的东西时,它也会返回正常,但是当我键入“crohns”时它不返回字符串“克罗恩的“
这是我的schma.xml代码
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
</analyzer>
</fieldType>
答案 0 :(得分:0)
考虑使用WordDelimiterFilterFactory
从每个子词中删除所有格“s”。
示例:
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" stemEnglishPossessive="1"/>
</analyzer>
stemEnglishPossessive
属性可以解决问题。实际上它的默认值是1。