2017-01-02 23 views
0

我试图在我的分析器中执行PorterStemFilterFactory在索引过程中。但是当我查询文档时,输出没有添加上述分析器之前获得的文档。如何获取文档词干和普通过滤器。Solr search not returing documents

模式:

<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> 
当我搜索查询“敏捷”下面分析

,它返回在查询中发现的文件。

<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

给你一些你想要搜索的例子吗?之前有效的东西? – root545

+0

感谢您的答复。我已编辑帖子 –

回答

0

所以PorterStemFilterFactory去除的话普通的结局。

在你的情况下,字agile减少到agil

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

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

你会看到你不能找到这个词agile,因为它是源于agil

这就是为什么你无法搜索agile,因为这个词没有任何文档。尝试搜索agil,您应该看到结果。

+0

感谢您的回复。其工作正如您所建议的。但我怎样才能查询“敏捷”,并获得相同的结果,应用于分析器的词干滤波器。 –

+0

添加到查询分析器中,然后尝试 – root545

+0

此更改有效。谢谢 –

0

使用 “solr.PorterStemFilterFactory” 会生成令牌agil

我建议你使用

<filter class="solr.EnglishMinimalStemFilterFactory"/>

后置滤波器agile将是相同的agile

使用过滤器按您的要求。

+0

感谢您的答复。这有助于匹配复数。 –

+0

@arunabraham正确... – vinod

相关问题