2013-05-13 77 views
1

我有一個帶有「name」和「description」字段的索引。我對我的索引運行一個布爾查詢。有時這個詞出現在名稱和說明字段中,在這種情況下,名稱和描述都包含搜索詞的文檔與具有名稱或描述的搜索詞相比得分更高。或使用elasticsearch查詢

我想要的是讓他們平等。因此,具有該詞的名稱或說明的文檔與具有名稱和說明中存在搜索詞的文檔具有相同的分數。

可能嗎?

這裏是例子:

{ 
    "name":  "xyz", 
    "description": "abc xyz" 
}, 
{ 
    "name":  "abc", 
    "description": "xyz pqr" 
}, 
{ 
    "name":  "xyz", 
    "description": "abc pqr" 
} 

如果術語「XYZ」我想最重要的三個文件的用戶搜索到具有相同的分數。 由於所有文件均在名稱或描述中或兩個字段中都包含術語「xyz」。

回答

0

我認爲你可以:

  • 改變你查詢到一個過濾器。過濾器不會影響得分(和比查詢更快)
  • 或者「恆定分數查詢」包裝你的查詢 - 請參見:
1

你可以使用這個Filtered Query。過濾器不計分。請參閱下面的查詢以搜索術語"xyz"

POST <index name>/<type>/_search 
{ 
    "filtered": { 
     "query": { 
      "match_all": {} 
     }, 
     "filter": { 
      "bool": { 
       "should": [ 
        { 
         "term": { 
          "name": "xyz" 
         } 
        }, 
        { 
         "term": { 
          "description": "xyz" 
         } 
        } 
       ] 
      } 
     } 
    } 
}