2012-04-03 75 views
4

我試圖在查詢時執行同義詞過濾,以便如果我搜索X,Y的結果也顯示出來。如何在Solr中使用SynonymFilterFactory?

我轉到Solr正在運行的位置,編輯.txt文件並在新行上添加X,Y。

這不起作用。我檢查架構,我看到:

<analyzer type="query"> 
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> 

我錯過了什麼?

編輯 評估配置文件

的tomcat6 /卡塔利娜/本地主機似乎指向正確的位置

<Context docBase="/data/solr/solr.war" debug="0" privileged="true" allowLinking="true" crossContext="true"> 
    <Environment name="solr/home" type="java.lang.String" value="/data/solr" override="true" /> 
</Context> 

此外,在Solr管理我看到這一點。 cwd是什麼意思?

cwd=/usr/share/tomcat6 SolrHome=/data/solr/ 

回答

2

只在索引時使用SynonymFilterFactory,而不是查詢時間。在查詢時,同義詞存在一些細微但易於理解的問題。

參見:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory

後您移動同義詞指數分析儀鏈,檢查它們與在管理界面的分析頁面的工作。

+0

這是否意味着在建立同義詞後我應該刪除我的索引並重新索引? – AlxVallejo 2012-04-03 18:28:57

+0

短而甜:是:) – 2012-04-03 20:45:25

+0

分析頁似乎沒有閱讀我的模式。 SynonymFilterFactory仍然顯示爲「查詢」並引用「synonyms .txt」。我不知道爲什麼它正在讀同義詞.txt,因爲我在Schema頁面查找了「synonyms .txt」,發現沒有匹配。 – AlxVallejo 2012-04-03 21:22:47

0

來自@Walter Underwood的答案很好,但不完整。

是否在索引或查詢時間depends on your default operator處使用SynonymFilterFactory。

所以,讓我們說我們有這個條目的同義詞文件:

5,five 

如果默認操作爲OR(這是默認的缺省操作),那麼你必須讓你的同義詞上查詢過濾器。這樣,對於「5」的查詢將作爲「5」或「5」的查詢傳遞給後端,並且後端將適當地作出響應。同時,您可以在不重新索引的情況下對同義詞文件進行更改,並且索引更小,因爲它不必擁有太多的令牌。

但是,如果將默認操作符更改爲AND,則應該在索引過濾器上設置同義詞。如果你不這樣做,對「5」的查詢會作爲「5」和「5」到達後端,並且它與預期的文檔不匹配。唉,這使索引更大,也意味着新的同義詞需要完整的索引。

注意:documentation for this目前是錯誤的,遺漏了所有這些細節。

相關問題