【问题标题】:When is the analysis chain created for Edge N Gram in Elasticsearch什么时候为 Elasticsearch 中的 Edge N Gram 创建分析链
【发布时间】:2017-10-03 10:54:19
【问题描述】:

我试图找出哪个更适合增量搜索 - 边缘 n 语法或完成建议。到目前为止,我在 Internet 上阅读的内容表明,对于完成建议程序,数据的处理是在创建索引时完成的,而对于 edge n gram,它是在查询时完成的,因此它比完成建议程序慢。然而,刚刚在 Elasticsearch - The definitve guide 中,我为 edge n gram 阅读了这本书,它也是在索引时完成的。现在我真的很困惑,任何人都可以澄清一下 edge n gram 在内部是否有效。

谢谢

【问题讨论】:

    标签: elasticsearch elasticsearch-5


    【解决方案1】:

    两者都在索引时起作用,构建专用数据结构:

    • N gram 标记器生成标记:“hello world”变为“h”、“he”、“hel”...“worl”、“world”。使用通常的“文本”(又名“字符串”)映射类型。
    • 完成建议生成图:见https://www.elastic.co/blog/you-complete-me。此时,有一个特殊的映射类型“完成”。

    在搜索时,建议器的成本更低:

    • N 克标记器:
      • 必须分析键入的文本,搜索结果词:搜索到的“Hello Wor”应分析为“hello”+“wor”,并搜索这两个词。
      • 然而,N gram 标记器应该从分析中移除(在搜索和索引之间使用不同的分析器):搜索“Henry”将被分析为“h”、“he”、“hen”、“henr”...并会返回“hello”,因为它们共享相同的前缀“he”。
    • 完成提示更简单快捷。如果您尝试在用户在键盘上键入时自动完成搜索,那么性能很重要。

    在这两种情况下,您都可以使用自定义分析链(法语、德语、soundex...):

    • N 克:
      • 写入时间:自定义分析 + 边缘 ngram + 输入“文本”
      • 读取时间:自定义分析+截断+搜索API
    • 完成
      • 写入时间:自定义分析 + 输入“完成”
      • 阅读时间:自定义分析 + 建议 API

    【讨论】:

    • 嗨,您能否详细说明“N gram tokenizer:必须分析键入的文本,搜索结果词。然而,应该删除 N gram tokenizer(在搜索和索引之间使用不同的分析器)”。
    • 如果对文本进行分析,而不是现有图表,那会有用吗?例如,如果我使用语音分析器,那么 ifone 也会找到 iphone,但我不会在我已经生成的令牌中找到它。
    猜你喜欢
    • 2012-05-04
    • 1970-01-01
    • 2019-01-26
    • 2019-04-13
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    相关资源
    最近更新 更多