2012-03-19 56 views
0

我目前正在通過Rails項目中的太陽黑子實施Solr。在文檔太陽黑子:如何實現搜索結果層次?

看我不`噸看到我將如何實現搜索結果的層次,我的意思是:

  • 匹配查詢&所有的用戶都資料圖片應該是 顯示第一。

  • 所有匹配查詢&的用戶都不會有個人資料圖片,應該在下面顯示 。

  • 等等......。

我將不勝感激就如何實現這樣的系統中的任何指導或引用。

+0

請記住,SOLR和Lucene沒有「匹配」的二進制方法,而是提供相關性分數(介於0和1之間)。因此,如果由於存在配置文件圖片而導致低關聯性「命中」顯示遠高於高關聯性命中,則您的方法可能導致意外的結果(從用戶的角度來看)。例如。查詢「john maynard smith」可能與「John M Smith」有很高的相關性匹配,但與「Jason Smith」相關性較低,但如果Jason Smith有照片,它會在結果列表中看起來更高。在我看來這將是糟糕的可用性。 – nickdos 2012-03-20 05:27:16

+0

這可能有所幫助:http://stackoverflow.com/a/9726365/604511 – aitchnyu 2012-03-20 07:51:44

回答

0

如果你想首先顯示與個人資料圖片用戶,而不是以後誰做的 -
可以使用與sortMissingLast排序,這將導致所有沒有出現任何最後的值記錄。
else對於沒有值的記錄具有默認值,以便它們在排序時最後出現。

0

多年來我多次聽到這個請求,並且它不像人們所期望的那樣工作。最壞的情況行爲非常糟糕,很常見。

你可能不想那樣做。只要包含一個常用術語,如「Jr」,即使這是正確的結果,您也必須在第一個配置文件沒有圖片之前顯示數千個帶有圖片的結果。

這會比你期望的更頻繁發生,因爲常見的名字很常見,所以它們在查詢中顯示很多,並匹配大量文檔。這可能會發生在您最常見的查詢中。哎呀。

取而代之的是用質量因子提升結果。如果有兩個「Joe Smith」配置文件,則帶有圖片的配置文件會更好,並應首先顯示。您可以使用edismax結果處理程序的「boost」參數來執行此操作。如果某個配置文件中有照片,請使用2的提升,否則提升爲1.您可能需要使用精確值來獲取所需內容。