2014-03-04 48 views
1

我希望SolR能夠從我的網站用戶的選擇中「學習」。我的意思是,我知道用戶在執行搜索後點擊了哪個產品。因此,我收集了SolR中索引的每個產品的[搜索詞搜索=>點擊次數]列表。但我不知道如何得到一個取決於用戶輸入的提升。是否可以索引文檔的某些鍵/值對,並使用boost參數中可用的函數檢索值?使用用戶行爲提升SolR結果

我不知道是明確的,所以我會添加一個具體的例子:

比方說,當「花園椅」用戶搜索,SOLR返回我3個產品,「綠色園林椅」 ,「藍色椅子」和「花園hamac」。 「綠色花園椅」排名第一,hamac排名最後,如預期。 但是,所有搜索「garden chair」的用戶最終都會點擊hamac。

我想幫助hamac在搜索「花園椅」上排名第一,而不會改變其在其他搜索中的排名。所以我想能夠執行一個key =>基於值的提升。 SolR可以實現嗎?

我確定我不能成爲第一個需要這種基於用戶的搜索結果改進的人。

在此先感謝。

回答

1

如果您使用edismax(或者bf),您可以edismax bq。對於這個工作,你顯然需要存儲的信息(在DB,Redis的,不管你喜歡):

  • 搜索 「花園椅」:
    • 點擊 「hamac的花園」:10
    • 點擊 「綠色園林椅」:4
  • 搜索 「綠表」:
    • ...

等等,當有搜索的時候查看,如果有信息可供搜索,發送bq提高你想要的。

此外,請檢查QueryElevationComponent它可能是您的目的(儘管比只是提高....更強大)。有雖則考慮兩件事情:

  1. 你改變,你會需要修改xml和重裝點擊數每一次,所以如果你能批它會更好,它在夜間或類似的東西。
  2. 有一個最近的JIRA問題,讓您可以提供類似的功能,但通過提供請求參數,無需XML /重裝的,所以檢查出過
+0

您好,感謝您的回答。那麼,我想bq/bf,但我的問題是能夠提供一個取決於用戶輸入的提升因素。基本上,我不知道如何獲得bq/bf字段中的參數化函數。是的,我正在計劃進行夜間批量更新。 – Laloutre

+0

@ user3380561更新了更多細節,現在清楚了嗎? – Persimmonium

+0

是的,我認爲是。謝謝。我還將添加有關Redis與SolR的鏈接。還沒有測試,但似乎看起來像我需要做的[鏈接](http://www.supermind.org/blog/1037/connecting-redis-to-solr-for-boosting-documents) – Laloutre