代码之家  ›  专栏  ›  技术社区  ›  rap-2-h

Elasticsearch:获得精确匹配,然后是模糊匹配

  •  0
  • rap-2-h  · 技术社区  · 6 年前

    GET /thing/_search/?
    {
      "query": {
        "multi_match" : {
          "query":      "castle pontivy",
          "type":       "most_fields",
          "fields":     [ "title", "loc" ]
        }
      }
    }
    

    thing 哪里 title loc 包含 castle pontivy 以相关的顺序。不错。

    标题 . 也就是说如果一个项目完全匹配 castle pontivy

    有办法吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Polynomial Proton    6 年前

    你可以做一个 phrase 匹配并给它一个 boost function score query (我建议你应该)

    第二个multi\u匹配将使用 most_fields .

    {  
      "query":{  
        "bool":{  
          "should":[  
            {  
              "multi_match":{  
                "query":"castle pontivy",
                "type":"phrase",
                "fields":[  
                  "title",
                  "loc"
                ],
                "boost":5
              }
            },
            {  
              "multi_match":{  
                "query":"castle pontivy",
                "type":"most_fields",
                "fields":[  
                  "title",
                  "loc"
                ]
              }
            }
          ]
        }
      }
    }