2016-10-26 18 views
1

私はelasticSearchを使用しています。2.2 whithインデックス私は簡単にマッピングを変更することはできません。キーワードに基づいて検索リクエストを行いたいと思います。ここで配列文字列フィールドのElasticSearchスコアを変更しますか?

私の文字列配列フィールドのマッピング "キーワード":

"keywords": { 
      "type": "string", 
      "norms": { 
       "enabled": false 
      }, 
      "analyzer": "analyzer_keyword" 

"analyzer_keyword": { 
       "filter": "lowercase", 
       "tokenizer": "keyword" 
      } 

私はPOSTでそれのようにブール要求を使用して、それを照会する:

{ 
    "query": 
    { 

    "bool" : { 
     "should" : 
     [ 
      { 
       "term": 
       { 
       "keywords": "foo bar", 
       } 
      }, 
      { 
       "term": 
       { 
       "keywords": "baz", 
       } 
      }, 
      { 
       "term": 
       { 
       "keywords": "qux", 
       } 
      } 
     ] 

    } 


    }, 
    "highlight": { 
    "fields" : { 
     "keywords" : {} 
    } 
    } 
} 

最高のヒットスコアが最大のキーワードを含むヒットであることを希望します。

ヒットの例ソートスコアによって私はこの要求に対して希望:

  1. {ID:#X、キーワード:[ "FOOバー"、 "バズ"]}
  2. {ID:#Zキーワード:[ "FOOバー"、 "qux"]}
  3. {ID:#Y、キーワード:[ "qux"]}
  4. {ID:#W、キーワード:[ "バズ"]}

代わりに、私はこのようないくつかの結果を得ました:

  1. {ID:#X、キーワード:[ "FOOバー"、 "バズ"]}
  2. {ID:#Y、キーワード:[ "qux"]}
  3. {ID:#Zキーワード:[ "fooのバー"、 "qux"]}
  4. {ID:#W、キーワード:[ "バズ"]}

は、あなたのアイデアは私がそれを管理するために助けることができる必要がありますか?

私の悪い英語と申し訳ありませんが、あなたの助けを借りて申し訳ありません。

答えて

0

結果はスコアでソートされ、そのスコアはシャード内の一致する用語の頻度を含む多くの基準に依存します。しかしあなたは気にしません、条件のすべての条項について同じスコアを使用したい場合、使用できるもの:

GET /test/test/_search 
{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "constant_score": { 
      "query": { 
       "term": { 
       "keywords": "foo bar" 
       } 
      } 
      } 
     }, 
     { 
      "constant_score": { 
      "query": { 
       "term": { 
       "keywords": "qux" 
       } 
      } 
      } 
     }, 
     { 
      "constant_score": { 
      "query": { 
       "term": { 
       "keywords": "baz" 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
+0

ご回答ありがとうございます。 ブーストは私が思うこの場合私を助けることができません。キーワードの一致数でソートしたい –

+0

確かに、私は質問を誤解していたし、あなたのクエリのタグのオフセットに応じて並べ替えると思った、私は私の答えを編集しました。今日はスコアリングシステムについて多くのことを学んだ。 – Pandawan

+0

それははるかに良く機能しますが、私はいつもいくつかのエラーがあります。私はこの瞬間にこれを躊躇し、後者を試してみる。 あなたの答えをありがとう! –

関連する問題