gpt4 book ai didi

elasticsearch - 如何对带有/不带有特殊字符的所有类型的单词实现match和match-phrase-prefix的一致行为?

转载 作者:行者123 更新时间:2023-12-02 23:31:25 28 4
gpt4 key购买 nike

我创建了两个相等的api,就像从Elastic搜索中搜索filelds一样:

例如:如果 flex 搜索中的“queuename”字段具有诸如queue,queue1,queue2和3queue之类的值

  • equal api:返回与输入字段值完全相等的结果。 (注意:我正在使用 bool(boolean) 匹配查询)

  • 相等的api输入:队列名称=队列

    相等的api结果:1个包含queuename = queue的文档
  • 类似于api:它返回字段值等于或超集的结果
    输入字段值。 (注意:我正在使用 match-phrase-prifix 查询)

  • 像api输入一样:queuename = queue

    像api result一样:包含所有4个queuename queue,queue1,queue2和3queue的文档。

    注意:在我的映射中,我使用的是默认分析器,即 标准

    如果我使用带有特殊字符的queueName(例如#,$,@等),则我的均等api的上述功能会中断。

    例如:如果 flex 搜索中的“queuename”字段具有诸如queue,queue#1,queue.2和3 @ queue之类的值

    相等的api输入:队列名称=队列

    实际的eqaul api结果:包含所有4个队列名队列,队列#1,队列2和3 @ queue的文档

    预期1个文档,其中包含queuename = queue

    如果我将分析器从 标准更改为空白,则它适用于相等的api,但我的同类api无法获取预期的结果(它不会在3queue或3 @ queue中搜索queuename = queue)

    我还尝试了 “index”:“not_analyzed” ,但这也只能使我的api工作正常,并且无法像api那样工作。

    对于具有/不具有特殊字符的所有类型的单词,如何才能实现等于和相似的api的预期行为?

    最佳答案

    最后,它像下面这样声明myqueuename:

    "queuename": {
    "type": "string",
    "index": "not_analyzed",
    "fields": {
    "sloppy": { "type": "string", "analyzer": "standard" }
    }}

    在我喜欢的API中,我搜索queuename.sloppy而不是queuename。看看是否可行。

    这以两种不同的方式分析数据-一种用于每种API。

    关于elasticsearch - 如何对带有/不带有特殊字符的所有类型的单词实现match和match-phrase-prefix的一致行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36019994/

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