2013-02-20 50 views
0

我已經設置了SOLR,並向示例'collection1'添加了一個文檔。在SOLR查詢中使用詞根分析

<doc> 
    <str name="id">3007WFP</str> 
    <str name="name">Fishing</str> 
    <str name="type">Ladies</str> 
</doc> 

我可以用

name:*fishing* 

查詢它的界面確定,但我想獲得所產生的工作,讓我可以如輸入fish,並得到這個文件,因爲詞fishing被阻止。當我搜索Lady時,我也希望能夠找到Ladies

但是我試圖查詢

name:fish 

和我沒有得到任何結果。我沒有添加通配符,因爲我知道它會匹配,只想測試詞幹函數。

我已經將名稱和類型字段的模式類型更改爲text_en,我相信這包括詞幹 - 重新啓動SOLR和重新索引(單擊優化)。

有什麼我失蹤或做錯了,是查詢語法不同,當你想使用詞幹?

另一個奇怪的問題是從text_generaltext_en搜索變更爲

name:Fishing

後產生任何結果,即使它應該是完全匹配的..

+1

你能幫我解釋一下text_general和text_en的描述嗎? – JHS 2013-02-20 15:30:06

回答

2

點擊優化不會重新索引文件。它將簡單地合併現有索引中的各個部分,這意味着您的索引仍然很舊。所以一旦你重新發布,即重新索引你的文件,name:fish應該匹配。

順便說一句,你可以看看分析器在http://localhost:8983/solr/#/collection1/analysis上做什麼。您可以選擇fieldType並查看索引時發生了什麼。例如,使用這個工具,你可以看到,對於text_en類型,

fishing -> fish 
ladies -> ladi 

所以type:lady搜索不會在文件匹配。如果您還在「字段值(查詢)」中指定查詢,則會突出顯示匹配項(如果有)。

0

您必須刪除文件並重新添加它們,以便新的fieldType更改生效。

有關stemming如何工作的詳細信息以及可用的不同類型的干擾,您可以查看here

在你的情況下,語言是英語,所以你可以使用PorterStemFilterFactory