2012-12-31 52 views
0

我想在搜索(solr)中實施點擊相關度排名。基本上取決於用戶的反饋(哪些是點擊),我們想要改變搜索結果的排序。以下是我的方法。點擊相關度排名

我們將在文檔中添加一個新字段,以便爲訪問(或單擊)結果/文檔的查詢編制索引。無論何時點擊結果,我們都會更新索引以包含結果已被點擊的查詢。我們將使用solr的部分更新將新查詢添加到索引。因爲我們也使用索引作爲我們的數據存儲區,所以我們所有的字段都被存儲起來,並且我可以再存儲一個字段。

這是實現此功能的正確方法嗎?

回答

1

注:我,還必須評估記錄,它是(還)離實現它。我剛剛制定了一個需求說明,我開始制定。
它如下。

Evaluate user selection (Click through) for `query` and matched result position. 

該位置很重要,因爲它決定了相關性。

我選擇了最好的結果爲3.(假設N=3)。

  1. 如果用戶選擇的內容爲N>3,則增加此查詢的結果提升非常重要。
  2. 如果位置在N<=3,我們很好。
  3. 如果位置是consistantly在N<=3,降級前的結果(也許?)

但是,我們可以得到很多的錯誤信息,在這裏。假設,一個用戶瘋了,並點擊絕對不相關的結果。

所以我們需要監視使用情況,甚至記錄用戶事件,除了基本位置和點擊以覆蓋這個。

因此,日誌需要放在:每頁

  • 點擊結果每{user-login|session}
  • 點擊結果{Query + Filters + Facets}。一個特殊的標誌{did you mean... | autocomplete}點擊事件,{TimeStamp + Location}

如果用戶獨特的顯著數指明的時間範圍(月)期間低分文件點擊,我會根據位置提振文件。因爲我們甚至有一個用戶會話(登錄)的相關聯,所以我可能能夠根據用戶映射結果(如果用戶產生無關噪聲,將它發回給他; P)。

但是,我會盡我所能不要放在太多的提振。搜索可能看起來被篡改。

此外,用戶填寫的反饋表格可能是一個好主意,可以幫助您瞭解自己的表現。

+0

感謝您的詳細解答..我想知道,您如何使用從日誌中提取的信息?你是否按照我的建議將這些信息重新存入索引中?或從索引中獲取結果,然後進行一些我認爲效率不高的後處理。 – naresh

+0

正如我所說的,實現是留下來的,但有兩個選擇之一:1.使用包含查詢標記的另一個字段(並且每個日誌轉儲只更新該字段),2.更新字段提升(每24-48小時一次)。我從來不關心索引效率,因爲我的指數<1Gb。 –