我正在尝试在索引期间在我的分析器中实现 PorterStemFilterFactory 。但是当我查询文档时,输出没有我在添加上述分析器之前得到的文档。如何获取两者的文档干扰和正常过滤器。
模式:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[^a-zA-Z0-9]" replacement=" "/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
当我使用下面的分析器搜索“agile”查询时,它返回了找到查询的文档。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[^a-zA-Z0-9]" replacement=" "/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
先谢谢
答案 0 :(得分:0)
因此master
会从单词中删除常见的结尾。
在您的情况下,PorterStemFilterFactory
这个词会缩减为agile
。
您可以在此处查看https://tartarus.org/martin/PorterStemmer/voc.txt。 (在这里搜索敏捷这个词)。
现在在应用Porter Stemming后搜索相应的输出。 https://tartarus.org/martin/PorterStemmer/output.txt
您会发现自己无法找到agil
这个词,因为它源于agile
。
这就是为什么您无法搜索agil
,因为该单词不存在任何文档。尝试搜索agile
,您应该会看到结果。
答案 1 :(得分:0)
使用&#34; solr.PorterStemFilterFactory&#34;将生成令牌agil
我建议您使用
<filter class="solr.EnglishMinimalStemFilterFactory"/>
后置过滤器agile
将与agile
根据您的要求使用过滤器。