我目前正在使用 BoolQueryBuilder 来构建文本搜索。我遇到拼写错误的问题。当有人搜索“chiar”而不是“chair”时,我必须向他们展示一些建议。
我浏览了文档并观察到 SuggestionBuilder 对于获取建议很有用。
我可以在一个查询中发送所有请求,以便在结果为零时显示建议吗?
我目前正在使用 BoolQueryBuilder 来构建文本搜索。我遇到拼写错误的问题。当有人搜索“chiar”而不是“chair”时,我必须向他们展示一些建议。
我浏览了文档并观察到 SuggestionBuilder 对于获取建议很有用。
我可以在一个查询中发送所有请求,以便在结果为零时显示建议吗?
无需发送不同的搜索词,即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"
}
}