2012-11-26 28 views
1

是否可以根據字段值提升索引階段的文檔?SOLR索引時間提升取決於字段值

我正在索引從數據庫中拉出的文本字段。我希望提高較長時間內的結果。所以boost的值應該取決於文本字段的長度。

這是需要改變標準SOLR行爲,在我的情況下往往會首先返回具有多個匹配的文檔。

考慮到我有一個存儲文件的長度,我需要什麼,在索引將查詢相當於一個字段:{!提振B =開方(長度)}

Q =文本:ABCD

例子: 我在DB兩個項目:

ABCDEBCE 
ABCD 

我總是希望得到ABCD先爲'BC'即使其他項目包含搜索查詢兩次。

該問題的另一種解決方案是「關閉」在查詢時刻分數更高的特徵的功能。不知道這是否可能...

在索引時做這件事很重要,因爲我運行SOLR的硬件功能不是太強大,並且試圖通過OutOfMemory異常提高查詢時間返回值。 (即使我能解決,對於Java增加內存我更願意在安全方面,實施指數的最有效的方式。)

回答

0

是的,沒有 - 而是你如何做到這一點取決於你如何是索引你的文件。

就我所知,目前沒有辦法只在solr服務器端解決這個問題。

如果您在使用常規的基於XML的接口提交文件,讓生成的XML提交添加升壓=代碼「..」值字段或將取決於文本字段的長度的文件。

+0

我正在使用DataImportHandler從數據庫導入數據。那裏有什麼選擇會適合嗎? – mrt

0

您可以檢查在DIH Special Commands具有$docBoost命令

$ docBoost:提升當前的doc。值可以是數字或 toString的數字

但是,看起來沒有$fieldBoost命令。

對於你的情況下,雖然,如果你正在使用DefaultSimilarity,較短的字段提振得分計算高於較長的字段。
您可以根據需要使用更改的TF(Term Frequency)和LengthNorm Calculation確實實現您自己的Simiarity類。