2014-07-18 45 views
0

我嘗試通過索引時間提升來增加文檔分數。索引時間文件提升沒有考慮到

我張貼以下JSON到Solr服務器:

{ 
"add": { 
"boost":150, 
    "doc": { 
     "id":"doc12345", 
     "fieldToCheckUpdateExecuted":"some value" 
} 
}, 
"commit":{} 
} 

但是當我查詢的Solr的doc12345,我得到score=1

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":1, 
    "params":{ 
     "q":"id:doc12345", 
     "indent":"true", 
     "fl":"id, score, fieldToCheckUpdateExecuted", 
     "sort":"score asc", 
     "wt":"json"}}, 
    "response":{"numFound":1,"start":0,"maxScore":1.0,"docs":[ 
     { 
     "id":"doc12345", 
     "fieldToCheckUpdateExecuted":"some value", 
     "score":1.0}] 
    }} 

我在做什麼錯?

+0

「id」字段的定義是什麼? – MatsLindh

+0

@fiskfisk,'

+0

您是否使用版本1.5作爲模式? (請參閱架構的第一個標籤) – MatsLindh

回答

1

從schema.xml版本1.5開始,本地類型(string,int,float,boolean等)默認啓用omitNorms。對於字段索引時間提升需要規範,因此如果啓用omitNorms,則索引時間提升對該字段不起作用(並且文檔提升是對所有字段應用的提升)。

設置omitNorms=false爲id字段,reindexing應顯示另一個分數。

當前的recommended way of doing boosts將使用FunctionQuery並將其基於文檔中字段的值作爲boost({!boost b=field})。

+0

將'omitNorms'設置爲false確實有幫助。但是,儘管查找的方式儘可能增加文檔得分(如果文檔包含在搜索結果中,它的分數應該增加)。有可能嗎? –

+0

我無法修改發送給solr的查詢。但我需要調整一些文檔的分數來檢查文檔是否正確排序(有幾個排序字段)。 –

+0

我不明白你的問題..如果文檔包含在搜索結果中,它被包括在內,因爲它的分數(意思是它匹配)。你想要解決什麼樣的用例?具有規範允許索引時間提升,這聽起來像你想要的。另一個選項是[QueryElevationComponent](https://wiki.apache.org/solr/QueryElevationComponent)手動將文檔放在頂部以進行某些查詢 – MatsLindh