2016-11-29 14 views
0

我使用N-GramsFilter將索引中的數據編入索爾。我面臨的問題是它將包含單詞的所有文檔作爲子字符串返回。就像我在數據中搜索DHA ... 它返回如何在solr響應中排列確切的單詞

DHAND 
DHARD 
DHAI 
DHAM 
DHA 

的DHA是在5號我想這是因爲它正好術語用戶搜索匹配的第一個。我如何訂購我的答覆,以便確切的匹配文檔應先到達後面跟着部分匹配的文檔...

其次我的數據包含非英文單詞,但他們拼寫英文我可以使用拼寫檢查器自帶solr 。?

回答

0

你想copyField的d搜索這兩個領域,但有不同的提升。所以,你在被處理的領域提供非常高的提升,只給你精確的匹配。如果匹配,那個文件就會先找到;如果不是 - 更寬鬆的n-gram字段。

我不明白問題的後半部分(非英文,但拼寫爲英文)。它應該是一個單獨的問題,更多的細節/例子。

0

在這裏,您可能需要具有與您正在搜索相同的其他字段。

而新複製的字段應該是String類型,可以用於排序。

您現在用於排序的字段已被標記,並且無法給您正確的排序。

1. Create/add another field by using copy field 

<copyField source="reference" dest="referenceSort"/> 

2. Add the field like below. 

<field name="referenceSort" type="string" indexed="true" stored="true"/> 

請參閱文件Documentation

排序可以在文檔的「分數」來完成,或任何 多值=「假」索引=「真正的」現場提供的那場無論是 非切分(即:有沒有分析儀),或者使用僅 產生單一期限的分析(即:使用KeywordTokenizer)