gpt4 book ai didi

search - Elasticsearch部分产品类型名称

转载 作者:行者123 更新时间:2023-12-02 22:32:40 24 4
gpt4 key购买 nike

在笔记本电脑上通常有一个"typename",例如。
联想T430
联想T430P
联想T430S

麻生

用户希望在搜索T430时找到T430的所有变体

但是Elasticsearch中的标准分析器基于空间/非字母数字的aso进行标记。

因此,搜索T430将仅返回T430变体,而不会返回其他变体。

解决此问题的最佳方法是什么?我已经考虑过这些解决方案

  • 检测到用户正在搜索产品类型,并将搜索转换为通配符搜索,例如。 T430 *-这很难扩展
  • 使分析器能够了解不同类型的产品类型,并可以从T430S构造一个T430 token
  • 最佳答案

    您可以使用prefix query比通配符查询执行得更好。
    为此,您需要不对字段进行如下分析

    "type_name": {"type": "string", "index": "not_analyzed"}

    另一种方法是使用 edge ngram tokenizer,这可能会增加索引大小,但会提供更好的性能。

    您可以如下定义自定义分析器
    {
    "settings" : {
    "analysis" : {
    "analyzer" : {
    "my_analyzer" : {
    "tokenizer" : "customedgeNgram"
    }
    },
    "tokenizer" : {
    "customedgeNgram" : {
    "type" : "edgeNGram",
    "min_gram" : "3",
    "max_gram" : "10"
    }
    }
    }
    }
    }

    您需要根据需要更改 min_grammax_gram值。并在您的 Realm 中用作
    "type_name": {"type": "string", "analyzer": "my_analyzer"}

    现在,您可以在字段 type_name上使用简单术语查询

    关于search - Elasticsearch部分产品类型名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30593557/

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