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

时间:2012-03-20 04:06:01

标签: solr

我要做的就是在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

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

由于

2 个答案:

答案 0 :(得分:2)

我能发现的唯一想法是你在查询和索引上使用同义词,这是不必要的。尝试在查询时使用同义词 。 *

我强烈建议使用Solr查询分析GUI来调试这些相关性问题。它可以在主要的Solr Admin GUI中找到。只需按照分析链接即可。

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

祝你好运!

答案 1 :(得分:0)

对于其他人来说,我有测试用例: 驴,eeore

在查询驴的分析GUI中,我期待着eeore。我没有得到这个。只是得到“驴”。以为我可能需要更改标记器。

然而它是expand = true - 我有假。文档说如果expand = false,它只会匹配一行的第一个同义词。我把它设置为true,它按照我的预期工作。