0

我目前正在使用 BoolQueryBuilder 来构建文本搜索。我遇到拼写错误的问题。当有人搜索“chiar”而不是“chair”时,我必须向他们展示一些建议。

我浏览了文档并观察到 ​​SuggestionBuilder 对于获取建议很有用。

我可以在一个查询中发送所有请求,以便在结果为零时显示建议吗?

4

1 回答 1

0

无需发送不同的搜索词,即chair获取chiar建议,它效率不高且性能不佳,而且您不知道用户可能拼错的所有组合。

相反,在匹配查询本身中使用模糊查询或模糊参数,可以在布尔查询中使用。

让我向您展示一个示例,使用带有 fuzziness 参数的 match 查询。

索引定义

{
    "mappings": {
        "properties": {
            "product": {
                "type": "text"
            }
        }
    }
}

索引示例文档

{
  "product" : "chair"
}

搜索词错误的查询chiar

{
    "query": {
        "match" : {
            "product" : {
                "query" : "chiar",
                "fuzziness" : "4" --> control it according to your application
            }
        }
    }
}

搜索结果

 "hits": [
      {
        "_index": "so_fuzzy",
        "_type": "_doc",
        "_id": "1",
        "_score": 0.23014566,
        "_source": {
          "product": "chair"
        }
      }
于 2020-03-24T05:22:15.257 回答