2014-02-05 44 views
3

我是elasticsearch的新手。在elasticsearch中,我們可以在幾乎所有查詢中使用術語「增強」。我知道它用於修改文檔分數。但我找不到它的實際用途。我的疑問是,如果我在某些查詢中使用boost值,它會影響搜索的最終分數還是索引本身中文檔的提升級別。在Elasticsearch中提升

而且是在什麼指數和增強的查詢提升的主要區別..

在此先感謝..!

+0

嘿@BlackPOP,如果你還在尋找提升的實際用法(至少在查詢時間),請閱讀這篇文章:http://jontai.me/blog/2013/01/advanced-scoring-in- elasticsearch/ – BrDaHa

回答

8

查詢時間提升允許您給一個查詢比另一個查詢更重。舉例來說,假設您要查詢「有緣」的titlebody領域,你可以寫爲:

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "match": { 
      "title": "Quick Brown Fox" 
      } 
     }, 
     { 
      "match": { 
      "body": "Quick Brown Fox" 
      } 
     } 
     ] 
    } 
    } 
} 

但你決定你想要的title場比body場更重要時,需要通過(例如)到boosttitle字段查詢2,這意味着:

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "match": { 
      "title": { 
       "query": "Quick Brown Fox", 
       "boost": 2 
      } 
      } 
     }, 
     { 
      "match": { 
      "body": "Quick Brown Fox" 
      } 
     } 
     ] 
    } 
    } 
} 

(注意match條款的結構如何改變以適應所述boost參數)。

boost2的值不是_score的兩倍 - 分數通過歸一化過程。因此,您應該將boost視爲使此查詢子句比其他查詢子句更重要。

我的疑問是如果我在某些查詢中使用boost值。它會影響搜索的最終分數嗎?

是的,但不應該依賴於_score的實際值。它的唯一目的是允許Elasticsearch決定哪些文檔與此查詢最相關。如果查詢改變,分數改變。

重新索引時間提升:不要使用它。它不靈活且容易出錯。

1

查詢時提升不會修改您的索引。它只在搜索時在字段上應用增強因子。

我更喜歡在查詢時增加,因爲它更靈活。如果您需要更改提升規則,並且您已將其設置在索引時間,則可能需要重新索引。

+0

你能否告訴我任何實時使用提升?仍然無法找到它的完整使用..! – BlackPOP