2013-03-14 98 views
0

我想知道是否有可能在索引時根據術語列表減少某些文檔的權重?ElasticSearch:-ve在索引時增強文檔

可以說我有一個包含以下的Fileds文檔: - 名稱, - 描述, - 標題

我想減輕體重,任何具有在提交「姓名」,「XYZ」。因此,當我搜索xyz時,在「名稱」字段中具有「xyz」的所有文檔將比「description」字段中具有「news」的其他文檔具有更低的分數。

回答

3

可以使用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" 
      } 
     } 
     } 
    } 
} 
' 
+0

謝謝您的回答。你能提供一個例子,我怎樣才能用java apis來做到這一點。我想要做的就是從數據庫中提取記錄,並在負值時將它們編入索引,如果「名稱」字段包含「xyz」。 – apatel 2013-03-16 20:47:19

+0

我目前的代碼如下所示:[java-code-for-es-indexing](http://pastebin.com/aW1AvFRW) – apatel 2013-03-16 20:54:13

+0

這真的有所幫助。我能夠實現這個使用以下內容: builder = QueryBuilders.boostingQuery()。negative(QueryBuilders.matchQuery(「sTitle」,「Traffic Weather News」)。operator(Operator.OR)) .negativeBoost(-100) .positive(助洗劑); – apatel 2013-06-18 19:33:09