首页 文章

Tokenizer与令牌过滤器

提问于
浏览
10

我正在尝试使用Elasticsearch实现自动完成,因为我知道如何做到这一点......

我正在尝试使用ES的edge_n_grams Build 多字(短语)建议,同时索引已爬网数据 .

tokenizertoken_filter 之间的区别是什么 - 我已经阅读了关于这些的文档,但仍然需要对它们有更多的了解....

例如,ES是用来搜索用户输入的token_filter吗?是一个令牌化器,ES用来制作令牌吗?什么是令牌?

ES可以使用这些东西创建多字建议吗?

1 回答

  • 33

    标记生成器会将整个输入拆分为标记,标记过滤器将对每个标记应用一些转换 .

    例如,假设输入是 The quick brown fox . 如果您使用edgeNGram tokenizer ,您将获得以下标记:

    • T

    • Th

    • The

    • The (最后一个字符是空格)

    • The q

    • The qu

    • The qui

    • The quic

    • The quick

    • The quick (最后一个字符是空格)

    • The quick b

    • The quick br

    • The quick bro

    • The quick brow

    • The quick brown

    • The quick brown (最后一个字符是空格)

    • The quick brown f

    • The quick brown fo

    • The quick brown fox

    但是,如果您使用标准标记生成器将输入拆分为单词/标记,然后使用edgeNGram token filter ,您将获得以下标记

    • TThThe

    • qququiquicquick

    • bbrbrobrowbrown

    • ffofox

    如您所见,在edgeNgram tokenizertoken filter 之间进行选择取决于您希望如何对文本进行切片和切块以及如何搜索它 .

    我建议看一下优秀的elyzer工具,该工具提供了一种可视化分析过程并查看每个步骤中产生的内容(标记化和令牌过滤)的方法 .

    从ES 2.2开始, _analyze endpoints 还支持explain feature,它在分析过程的每个步骤中显示详细信息 .

相关问题