我要做的就是在schema.xml中使用Solr SynonymFilterFactory:
<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>
synonyms.txt:
american, greek
当输入字符串为american
时,它在结果集中找不到greek food
字符串。
但是,当我输入greek
时,它会找到greek food
我的设置或我的同义词文件中有什么问题吗?
由于
答案 0 :(得分:2)
我能发现的唯一想法是你在查询和索引上使用同义词,这是不必要的。尝试在查询时使用同义词 。 *
我强烈建议使用Solr查询分析GUI来调试这些相关性问题。它可以在主要的Solr Admin GUI中找到。只需按照分析链接即可。
* Ps,关于你是否应该在查询或索引时使用同义词,有很多很好的讨论。这是一个漫长而复杂的讨论,不适合这个答案。
祝你好运!答案 1 :(得分:0)
对于其他人来说,我有测试用例: 驴,eeore
在查询驴的分析GUI中,我期待着eeore。我没有得到这个。只是得到“驴”。以为我可能需要更改标记器。
然而它是expand = true - 我有假。文档说如果expand = false,它只会匹配一行的第一个同义词。我把它设置为true,它按照我的预期工作。