3

我正在面對基於用戶點擊日誌排序Solr結果的問題。我希望更多的訪問結果是第一位的。有誰知道如何在Solr中配置或實現這樣的屬性?在用戶點擊的基礎上對solr結果進行排序?

非常感謝。

+0

什麼是更多訪問的結果是什麼意思?你用你的索引來維護查看次數,這有助於你識別這個嗎? – Jayendra 2012-03-29 06:43:55

+0

不知道如何保持solr中的視圖數?意味着如何在用戶點擊特定數據時將請求發送回solr? – 2012-03-29 06:51:45

+0

我問了一個類似的問題http://stackoverflow.com/questions/8411860/can-solr-boost-results-on-number-of-social-likes – aitchnyu 2012-03-29 13:09:50

回答

6

好問題。你的問題可以被認爲是一個典型的集體智慧或人羣智慧問題。第一步是對某些查詢點擊url的數量,即對於每個查詢,url對都會爲這個元組維護一個計數。每當用戶點擊一個特定的網址,計數就會增加1.作爲第二步,當Solr返回基於排名和相關度的結果算法(比如LCS,Vector Space等)時,每個查詢,url對返回給你一個公式,該公式爲Solr給出的文檔添加一個特定值(基於點擊次數),然後你必須根據獲得的總排名顯示結果。

獲得文檔的總排名= Solr給出的排名+點擊排名您給出的數值。

因爲當你搜索 「iphone計劃」 的一個例子,Solr的將返回以下鏈接中的高排名的以低:

  1. 蘋果
  2. AT &牛逼
  3. 亞馬遜

現在你檢查每個查詢,url對,例如{「iphone plan」,Apple} {「iphone plan」,AT & T} {「iphone plan」,Amazon}點擊次數,與Apple相比,AT & T的查詢點擊次數最高。通過使用用戶定義的公式並給出一些重要的點擊次數,您可以重新排列上面的公式並更改它們的顯示順序。

但是請注意,你所設計的公式不應該是好誰可以通過具有特定文檔巨大的點擊改變你的網站的排名全部東西垃圾郵件發送者(使用機械手說:))

的以上是邏輯。現在有兩個方法去實現上述:

  1. 更改Lucene的相似性類別(http://lucene.apache.org/core/old_versioned_docs/versions/3_0_1/api/all/org/apache /lucene/search/Similarity.html)首先了解Lucene如何進行排名,然後將模塊嵌入到該模塊中

  2. 在Solr之上實現它作爲獨立例程。

注:請記住,獲取查詢計數,URL對是不容易的,如果你有龐大的/大數據,在這種情況下,你需要寫一些地圖減少工作,以實現這一目標。

+0

你能給我提供一些示例代碼嗎? – 2012-03-29 10:02:46

+0

我們沒有使用lucene ..那麼如何直接使用php腳本來獲得結果? – 2012-03-29 10:15:01

+0

@KpGupta:Lucene是Solr背後的引擎,它爲您排序/相關的東西。正如我所提到的,它不會被提供給你,你將不得不編寫代碼/算法來做點擊排序的東西。 – Yavar 2012-03-29 10:21:14

相關問題