我使用Solr中查詢rord()
功能,以提高查詢結果對一個「等級」字段中,使用的語法是這樣的:在Solr中替換ord()和rord()函數查詢的建議策略是什麼?
bf=rord(cur_rank)^1.8
該算法的效果很好,但最近的變化Solr的指示使用ord()和rord()現在是一個內存豬。從the changelog:
搜索和排序,現在做了一個 每個區間爲單位,這意味着用於排序 和功能查詢 FieldCache項創建 和每個段使用的,可重複使用 針對不會在 索引更新之間更改的細分受衆羣。雖然通常 有利的,這可以在某些情況下 導致增加 存儲器使用超過1.3:
[...]
2)某些函數查詢諸如ORD ()和rord()需要一個頂級 級別的FieldCache實例,因此可能導致內存使用量增加 。 考慮使用替代方法替換ord()和rord() ,例如功能 基於ms()對日期 進行增強的查詢。
它提到處理可能的策略基於日期的提升,但如何對一個數字,如「等級」,其中等級爲1,記錄的總數之間的數字?
rord()似乎是理想的...任何其他策略?
這就是我們最終做的。 – danieltalsky 2011-09-01 04:25:55