为什么solr同义词过滤器不起作用



我所要做的就是在我的schema.xml:中使用Solr同义过滤器工厂

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
  </analyzer>
</fieldType>

同义词.txt:

american, greek

当输入字符串为american时,它在结果集中找不到greek food字符串
但是,当我键入greek时,它会找到greek food

我的设置或同义词文件中有问题吗?

感谢

我唯一能发现的是,您在查询和索引中都使用了同义词,这是不必要的。请尝试在查询时仅使用同义词。*

我强烈建议使用Solr查询分析GUI来调试此类相关性问题。它可以在主Solr Admin GUI中找到。只需点击名为分析的链接。

*Ps,关于是否应该在查询或索引时使用同义词,有很多很好的讨论。这是一个漫长而复杂的讨论,不适合这个答案。

祝你好运!

对于其他遇到此问题的人,我有一个测试用例:驴,eeore

在查询驴的分析GUI中,我期待着更多。我没有得到这个。只是得到了"驴"。我想我可能需要改变标记器。

然而,它是expand=true——我有false。文档表示,若expand=false,它将只匹配一行中的第一个同义词。我把它设为真,结果如我所料。

最新更新