2014-02-26 63 views
0

我是新來這個論壇。我正在尋找您對我們的搜索要求之一的建議。Solr搜索與排名和最佳匹配

我們有搜索的姓名,地址和其他相關數據的數據。用於搜索的輸入將成爲從多於一個單詞的文本串開始的免費輸入。搜索API應該匹配輸入字符串與完整的數據集包括名稱,地址和其他數據。爲了實現這一點,我已經使用copyField將所有必填字段複製到solr confg中的搜索字段。我正在使用searchField作爲可搜索的輸入字符串。輸入搜索字符串可能包含如下示例中的部分字詞。

名稱:測試保險公司

地址:123主大道,銀河城

電話:6781230000

後Solr的創建索引,搜索的領域會像文檔下方

search field {

產品名稱:Test Insurance company

地址:123主大道,銀河城

電話:6781230000

}

最終用戶可以輸入搜索字符串,如「測試公司主要大道」,檢索,目前返回上面的文件。但不是頂部,我看到其他文件也正在返回。

我制定Solr的查詢爲「」測試*公司主營大道」,通過互聯網,如何尋找幾個論壇後增加一個‘*’第一個字和逆着searchFiled

後,我已經採取了這一做法我能得到最大的比賽排在首位。不知道上面的方法是正確的。

任何幫助表示讚賞。

感謝,

拉姆

回答

0

您可以將所有字段分開編制索引,也可以使用您的searchField作爲catchall。

使用Edismax搜索處理程序來查詢帶有記分助推的所有字段+還查詢您的catchall字段。

例如。

<str name="qf"> 
Name^2.0 
Address^1.5 
. 
. 
. 
searchField^1.0 
</str> 

爲了提高相關性,你也可以索引每場兩次,一次是用字符串類型,然後用text_en類型,每this

<str name="qf"> 
    Name^2.0 
    Name_exact^5.0 
    Address^1.5 
    Address_exact^3.0 
    . 
    . 
    . 
    searchField^1.0 
</str> 
0

從技術上講,如果有一個你上面的文件想要匹配,那麼他們是一個更好的匹配,所以這取決於他們爲什麼得到更高的相關性得分。嘗試開啓調試並查看您的首選文檔上方的文檔是否獲得了額外的相關性。

一旦你知道爲什麼他們會更高,那麼你需要問自己,爲什麼你的首選文件應該是第一位的,這是什麼使它成爲你眼中的「更好」匹配。

一旦你決定了爲什麼它應該成爲最高,那麼你需要弄清楚如何對內容進行索引和搜索,以便你期望的第一個文檔實際上是第一位的,你可以在qux的回答中說索引多個版本的數據,以便更好地匹配等。

Si

+0

隨着edismax教程的幫助,我能夠得到我在找什麼。感謝您的建議qux。我仍然使用單個時間索引所有字段和qf,pf。 – ramch