gpt4 book ai didi

elasticsearch - 在 Elasticsearch 中,如何使用模糊搜索查询地名

转载 作者:行者123 更新时间:2023-12-03 01:15:41 26 4
gpt4 key购买 nike

我在 flex 搜索中插入了位置,以下是示例 flex 搜索存储的位置:

[
{
"lat": 1,
"lon": 1,
"place": "asddda ddsd asdad vasanth hhjkhk sdsdd asddasd"
},
{
"lat": 2,
"lon": 2,
"place": "asddda ddsd asdad vasanth1 hhjkhk sdsdd asddasd"
},
{
"lat": 3,
"lon": 3,
"place": "asddda ddsd asdad vasanth2 hhjkhk sdsdd asddasd"
},
{
"lat": 4,
"lon": 4,
"place": "asddda ddsd asdad test hhjkhk sdsdd asddasd"
}
]
如果我搜索 vasanth,它将给出正确的结果,因为它应该给出所有3个结果。但是,如果我用字符删除 Vsanth搜索,它只给出一个结果,但现在也应该给出3个结果。而且,如果我插入一个字符,那么我也将。无法正常工作。
根据 flex 搜索文档,模糊查询具有以下特点:
Changing a character (box → fox)
Removing a character (black → lack)
Inserting a character (sic → sick)
Transposing two adjacent characters (act → cat)
以下是我正在使用的查询,
{
"query": {
"fuzzy": {
"address": {
"value": "Vsanth",
"fuzziness":15,
"transpositions":true,
"boost": 5
}
}
}
}
因此,如何修改查询以使用模糊查询的所有四个功能。我没有犯什么错误。

最佳答案

问题是您有更多的编辑距离来匹配vasanth1 and vasanth2
Reference

The fuzziness parameter can be specified as:

0, 1, 2

0..2 = Must match exactly

3..5 = One edit allowed

More than 5 = Two edits allowed


并且您将模糊度指定为15,因此只允许进行两次编辑,这在es中最大。
因此,这里的问题是您的查询需要3个编辑距离,这是不支持的。
为什么3:
Vsanth-> vsanth-> vasanth-> vasanth1
  • 大小写更改->大写V变为小写v
  • 添加-> vasanth
  • 另外一个-> vasanth1

  • 因此,您将获得唯一的 vasanth匹配的文档。
    模糊查询是术语查询,将不会对其进行分析。在您的 place字段的分析器中添加小写过滤器将无济于事。

    关于elasticsearch - 在 Elasticsearch 中,如何使用模糊搜索查询地名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62645375/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com