我一直在使用ElasticSearch來構建搜索引擎,我有興趣手動更改每個術語的IDF(反向文檔頻率)以匹配可以測量的術語來自Google Books unigrams。瞭解ElasticSearch中的增強功能
爲了做到這一點我打算做以下幾點:
1)僅使用1個碎片(因此間接火力不計算爲每一個碎片,他們是「全球性」)
2)獲取ttf
(總詞頻,這是用來計算間接火力)在我的索引
curl -XGET 'http://localhost:9200/index/document/id_doc/_termvectors?pretty=true' -d '{
"fields" : ["content"],
"offsets" : true,
"term_statistics" : true
}'
3運行此查詢每一份文件,每學期)使用谷歌圖書的單字組模式「重新調整」的ttf
爲每術語。
問題是,一旦我找到了我必須用於每個術語的「推動」因素,如何在查詢中使用它?
例如,讓我們考慮這個例子
"query":
{
"bool":{
"should":[
{
"match":{
"title":{
"query":"cat",
"boost":2
}
}
},
{
"match":{
"content":{
"query":"cat",
"boost":2
}
}
}
]
}
}
這是否意味着,「貓」一詞的間接火力將是推動/乘以2倍?
此外,如果不是搜索一個單詞我有一個句子會發生什麼?這是否意味着每個單詞的IDF將被提升2?
我試圖理解boost
參數(https://www.elastic.co/guide/en/elasticsearch/guide/current/query-time-boosting.html)和t.getBoost()
的作用,但這似乎有點令人困惑。
感謝您的回答!不過,我想知道是否有辦法提升特定詞彙。在ElasticSearch指南中,他們提到't.getBoost()'來做到這一點,但我不明白如何在實踐中使用它。 – Brian
@Brian,'t.getBoost()'表示當我們在查詢中設置'boost'時,計算函數將通過't.getBoost'這個方法得到'boost'。 'boost'是爲了增加查詢子句的權重, – chengpohi
好的,謝謝!但是分數中的「提升」究竟如何?這是Lucene中得分的描述(https://www.elastic.co/guide/en/elasticsearch/guide/current/practical-scoring-function.html),但我不清楚當更多的時候會發生什麼而不是查詢中的一個詞。 – Brian