2013-01-13 57 views
1

我有一個標籤系統和標籤是這樣的:的Solr給出太多不相關的結果

italian kitchen 
chinese kitchen 
japanese kitchen 
russian kitchen 
vegeterian kitchen 

當我查詢的意大利廚房,我不頂得上的意大利廚房。我一直得到俄羅斯和日本以及其他不相關的結果。在Solr模式中,我的標籤字段的類型是字符串。我不知道爲什麼會發生這種情況。你能和我分享你的想法嗎?

回答

4

「字符串」的字段類型表示您的字段沒有得到標記。因此,每個字段都有一個令牌 - 傳入的整個字符串。因此,除非在整個字段中有精確的詞組查詢匹配,否則結果將不會比其他任何結果更具相關性,您可能希望使用類型「文本「,這會將字段分解爲令牌。 IE而不是「意大利廚房」,你會在現場編入「意大利」和「廚房」的術語。

+0

<字段名= 「貓」 TYPE =」字符串「索引=」真正「存儲=」真正「multiValued =」真正「/>這是領域,當我搜索意大利廚房,我得到中國廚房頂部,我認爲它打破了話,給了我這樣的結果。我怎樣才能得到確切的結果? – user1794257

+1

你嘗試過一個詞組查詢「意大利廚房」嗎?它對您的查詢分析非常重要,可以與您的索引分析相匹配。查詢本身可能會被切分成令牌,而查詢則不是。請記住,在此設置中,solr正在尋找完全匹配。令牌「意大利」與「意大利廚房」完全匹配,恰好與「中國廚房」完全匹配。如果您將「意大利廚房」標記爲「意大利語」和「廚房」,那麼「意大利語」將完全匹配符號「意大利語」,並且此結果將更具相關性。 –

+0

所以我應該改變貓字段類型爲字符串文本? – user1794257

1

你真的想通讀the section on tokenizers,至少前兩節。然後,如果您處於Solr 4中,請轉至管理界面並嘗試核心部分下的分析屏幕。這可以讓你把你的文字和你的類型(貓)放在一起,看看它實際發生了什麼。

現在,聽起來像你想讓「意大利廚房」成爲一個方面類別以及可搜索。這是一個雙重挑戰,因爲這些方面值來自所產生的令牌,所以您確實希望將其作爲一個字符串。在這種情況下,我的建議是保持字段作爲一個字符串字段,並做copyField到cat_text其中有一個切分型(看看例子的模式),並且使用eDismax跨多個字段進行搜索,包括cat_text

+0

我只是一個新手,所有我想要的,是有確切的結果,我不知道那些是什麼:)我應該怎樣做就拿不到不相關的結果?謝謝您的回答 – user1794257

0

你一定要做:

Q = your_field: 「意大利廚房」

,而不是

Q = your_field:意大利廚房

相關問題