我所要做的就是在我的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,它将只匹配一行中的第一个同义词。我把它设为真,结果如我所料。