Solr 搜索不返回文件

Solr search not returing documents

我正在尝试在索引期间在我的分析器中实现 PorterStemFilterFactory。但是当我查询文档时,输出没有我在添加上述内容之前获得的文档 analyzer.How 我可以得到同时具有词干提取和普通过滤器的文档吗?

架构:

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

提前致谢

因此 PorterStemFilterFactory 从单词中删除常见的结尾。

在您的例子中,单词 agile 被简化为 agil

您可以在此处查看 https://tartarus.org/martin/PorterStemmer/voc.txt。 (在这里搜索敏捷这个词)。

现在在此处搜索应用 Porter Stemming 后的相应输出。 https://tartarus.org/martin/PorterStemmer/output.txt

你会发现你找不到单词 agile ,因为它的词干是 agil.

这就是您无法搜索 agile 的原因,因为不存在包含该词的文档。尝试搜索 agil,您应该会看到结果。

使用 "solr.PorterStemFilterFactory" 将生成令牌作为 agil

我建议你使用

<filter class="solr.EnglishMinimalStemFilterFactory"/>

post 过滤器 agile 将相同 agile

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