web-dev-qa-db-ja.com

エラスティック検索で複数一致より完全一致を後押しする方法

弾性検索でmulti_matchより完全一致を後押しする次のクエリを実行しています。しかし、期待した結果が得られません。

私の目標は、「Java開発者」> Java AND開発者> Java OR開発者

誰かがこれのトラブルシューティングを手伝ってくれる?ここでmatch_phraseを強化する方法と、match_phraseに残りのフィールドを追加する方法を知る必要があります

"query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "Java developer",
            "fields": [
              "title",
              "content",
              "tags",
              "summary"
            ]
          }
        }
      ],
      "should": [
        {
          "match_phrase": {
            "title": "Java developer"
          }
        },
        {
          "multi_match": {
            "query": "Java developer",
            "fields": [
              "title",
              "content",
              "tags",
              "summary"
            ],
            "operator": "and",
            "boost": 4
          }
        }
      ]
    }
  }

ご協力ありがとうございます。

14
Vishal Sharma

これが私のために働いたものです:

  "query": {
    "bool": {
      "must": [
        {
          "multi_match": {
            "query": "Java developer",
            "fields": [
              "title",
              "content",
              "tags",
              "summary"
            ]
          }
        }
      ],
      "should": [
        {
          "multi_match": {
            "query": "Java developer",
            "fields": [
              "title",
              "content",
              "tags",
              "summary"
            ],
            "type": "phrase",
            "boost": 10
          }
        },
        {
          "multi_match": {
            "query": "Java developer",
            "fields": [
              "title",
              "content",
              "tags",
              "summary"
            ],
            "operator": "and",
            "boost": 4
          }
        }
      ]
    }
  }
16
Vishal Sharma

マルチマッチクエリのtypemost_fields に設定します。

"query": {
  {
    "multi_match" : {
      "query":      "Java developer",
      "type":       "best_fields",
      "fields":     ["title", "content", "tags", "summary" ]
    }
  }
}
1
Erdal G.