2012-03-20 90 views
1

所有我試圖做的是利用Solr的SynonymFilterFactory在我的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> 

synonyms.txt:

american, greek 

當輸入字符串是american它沒有找到greek food串在結果集中。
但是,當我輸入greek它發現greek food

在我的設置或我的同義詞文件中是否有問題?

感謝

+0

這裏的舊線程,但具有相同的問題。我剛剛更改爲WhitespaceTokenizerFactory。想知道這是否與它有關。 – frugardc 2013-04-22 16:51:10

回答

2

唯一想我能發現的是,你正在使用上都查詢和索引這是不必要的同義詞。在查詢時間嘗試使用同義詞只有。 *

我強烈建議使用Solr查詢分析GUI來調試這些類型的相關性問題。它可以在主要的Solr管理GUI中找到。只需按照稱爲分析的鏈接。

* Ps,關於您是否應該在查詢或索引時使用同義詞有很多很好的討論。它是一個漫長而複雜的討論,不適合這個答案。

祝你好運!

+0

您能舉一個例子說明如何在Solr中使用分析工具嗎?我使用了Field name = text並提供了一半的同義詞。 – AlxVallejo 2012-04-03 17:07:10

+0

我會按照教程閱讀有關分析的小節。 http://lucene.apache.org/solr/tutorial.html – 2012-04-05 11:55:00

0

對於其他人碰到這個來了,我只好測試用例: 驢,eeore

在查詢驢分析GUI我期待eeore。我沒有得到這個。只得到「驢」。以爲我可能需要更改標記器。

然而,它擴展=真 - 我有假。 Docs說如果expand = false,它將只匹配一行中的第一個同義詞。我將其設置爲true,並按照我的預期工作。