2012-10-04 47 views
1

對於一個電子商務網站,我們已經存儲產品與下列字段和重量SOLR文件: 標題:5 說明:4如何讓SOLR操縱結果?

對於某些產品,我們需要確保它們出現在頂部10個結果,即使它們在上述兩個字段中的相關性不符合排名前10的條件。例如: P1,P2,... P10是給定搜索關鍵詞「iPhone」的合法產品。我有S1 ... S100作爲贊助產品,希望出現在前10名。我的政策是,這100個贊助產品中只有2個會隨機選擇並顯示在前10名,結果如下:S5,S31 ,P1,P2,... P8。在下一個請求中,被贊助的產品可能是S4,S99。

QueryElevationComponent讓我們指定關鍵字的docID,但不讓我們對結果進行隨機化,結果只發送完整的贊助docID中的2個。

任何建議,以實施這將不勝感激。

感謝, 佳日

回答

0

這聽起來像是在那裏你將需要發出兩個單獨的查詢到Solr,一個是合法產品,另一個用於贊助的產品的情況下。然後,您將需要基於返回的兩個Solr結果手動操作/構造結果,以便它們符合預期的行爲。我不知道有什麼方法可以直接在Solr中實現。

0

只是一個想法,可能導致你在正確的方向:

你可以使用一個FunctionQuery排序。在此FunctionQuery中,您可以檢查結果是否爲贊助結果。如果是,則根據傳遞結果的索引(0-99)和ms()獲得的實際時間的兩個兩位數部分,可以決定是否通過返回初始查詢的分數或修改一個。

如果其索引與兩個兩位數字部分中的一個相同,則會提升結果。