2016-02-05 41 views
0

這在elasticsearch我的樣本數據Elasticsearch:禁用IDF完全搜索結果得分

{ 
    "_index": "12_index", 
    "_type": "skill_strings", 
    "_id": "AVKv-kM4axmY3fECZw9T", 
    "_source": { 
     "str": "PHP PHP PHP" 
    } 
}, 
{ 
    "_index": "12_index", 
    "_type": "skill_strings", 
    "_id": "AVKv-kNfaxmY3fECZw9U", 
    "_source": { 
     "str": "Javascript PHP Javascript Javascript" 
    } 
} 


"bool":{ 
    "must":[ 
    // some conditions 
    {"match_phrase":{"str":"php"}} 
    ], 
    "should":[ 
    {"match_phrase":{"sentences":"Javascript"}} 
    ] 
} 

規範是在結果集中禁用

,PHP(含16次)得到13.65分(而在另一個文檔中出現次數相同的JavaScript獲得的分數較低爲9.58

根據我的使用情況,無論單詞有多少或該字段有多短/多長,我都希望獲得相同的分數爲相同的期限頻率。

我該怎麼做?

+0

爲了清楚起見,要比分是否等於該術語在索引文檔中出現的次數? – Paul

+0

是的,但不是在整個文檔中,只在字段中,只要出現次數(詞頻)相同,它應保持相同 –

+0

從lucene角度來看,str字段*是文檔。 –

回答

1

如果你硬是要第一個文檔的得分爲str:php 3.0(分數標準化之前),第二也得分str:Javascript 3.0(分數標準化前),然後按[你應該看看script_score] [1]並使用[tf()函數] [2]。

這將完全繞過(1)的長度歸一化,(2) '的稀有'(IDF),和(3)(TF)的任何正常化的任何考慮