0
我想知道是否有可能在索引時根據術語列表減少某些文檔的權重?ElasticSearch:-ve在索引時增強文檔
可以說我有一個包含以下的Fileds文檔: - 名稱, - 描述, - 標題
我想減輕體重,任何具有在提交「姓名」,「XYZ」。因此,當我搜索xyz時,在「名稱」字段中具有「xyz」的所有文檔將比「description」字段中具有「news」的其他文檔具有更低的分數。
我想知道是否有可能在索引時根據術語列表減少某些文檔的權重?ElasticSearch:-ve在索引時增強文檔
可以說我有一個包含以下的Fileds文檔: - 名稱, - 描述, - 標題
我想減輕體重,任何具有在提交「姓名」,「XYZ」。因此,當我搜索xyz時,在「名稱」字段中具有「xyz」的所有文檔將比「description」字段中具有「news」的其他文檔具有更低的分數。
可以使用boosting query爲「降級」匹配特定查詢的條款,結果:
curl -XGET 'http://127.0.0.1:9200/_all/_search?pretty=1' -d '
{
"query" : {
"boosting" : {
"negative_boost" : 1,
"negative" : {
"match" : {
"name" : "xyz"
}
},
"positive" : {
"match" : {
"description" : "news"
}
}
}
}
}
'
謝謝您的回答。你能提供一個例子,我怎樣才能用java apis來做到這一點。我想要做的就是從數據庫中提取記錄,並在負值時將它們編入索引,如果「名稱」字段包含「xyz」。 – apatel 2013-03-16 20:47:19
我目前的代碼如下所示:[java-code-for-es-indexing](http://pastebin.com/aW1AvFRW) – apatel 2013-03-16 20:54:13
這真的有所幫助。我能夠實現這個使用以下內容: builder = QueryBuilders.boostingQuery()。negative(QueryBuilders.matchQuery(「sTitle」,「Traffic Weather News」)。operator(Operator.OR)) .negativeBoost(-100) .positive(助洗劑); – apatel 2013-06-18 19:33:09