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
根据您的要求使用过滤器。
我正在尝试在索引期间在我的分析器中实现 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
根据您的要求使用过滤器。