Solr搜索不撤回文档

时间:2017-01-02 04:56:07

标签: solr solrj

我正在尝试在索引期间在我的分析器中实现 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>

先谢谢

2 个答案:

答案 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

相同

根据您的要求使用过滤器。