词元生成器 #
词元生成器接收字符流,并将文本拆分为单个词元。一个词元由一个词条(通常是一个单词)以及关于该词条的元数据组成。例如,词元生成器可以根据空白字符来拆分文本,这样文本 Actions speak louder than words.
就会被拆分为 [Actions
, speak
, louder
, than
, words
.]。
词元生成器的输出是一个词元流。词元生成器还会维护关于以下词元的元数据:
- 每个词元的顺序或位置:此信息用于单词和短语邻近查询。
- 词元在文本中的起始和结束位置(偏移量):此信息用于高亮显示搜索词。
- 词元类型:一些词元生成器(例如
standard
词元生成器)会按类型对词元进行分类,例如<ALPHANUM>
或<NUM>
。较简单的分词器(例如letter
词元生成器)仅将词元分类为单词类型word
。
你可以使用词元生成器来定义自定义分词器。
内置的词元生成器 #
以下表格列出了 Easysearch 所提供的内置词元生成器。
单词词元生成器 #
单词词元生成器会将完整的文本解析成一个个单词。
词元生成器 | 描述 |
---|---|
standard | - 在单词边界处将字符串解析为词元 - 移除大部分标点符号 |
letter | - 在任何非字母字符处将字符串解析为词元 - 移除非字母字符 |
lowercase | - 在任何非字母字符处将字符串解析为词元 - 移除非字母字符 - 将词条转换为小写 |
whitespace | - 在空白字符处将字符串解析为词元 |
uax_url_email | - 与standard 词元生成器类似- 与 standard 词元生成器不同的是,将 URL 和电子邮件地址保留为单个词条 |
classic | - 在以下情况将字符串解析为词元: - 后面跟着空白字符的标点符号 - 如果词条不包含数字,则按连字符分割 - 移除标点符号 - 将 URL 和电子邮件地址保留为单个词条 |
部分词元生成器 #
部分词元生成器将文本解析为单词,并生成这些单词的片段,以便进行部分单词匹配。
词元生成器 | 描述 | 示例 |
---|---|---|
ngram | - 在指定字符(例如,标点符号或空白字符)处将字符串解析为单词,并为每个单词生成 n-gram(n 元组) | 输入:My repo 输出:[ M , My , y , y , , r , r , re , e , ep , p , po , o ]原因条件:默认的 n-gram 长度为 1 到 2 个字符 |
edge_ngram | - 在指定字符(例如,标点符号或空白字符)处将字符串解析为单词,并为每个单词生成边缘 n-gram(从单词开头开始的 n-gram) | 输入:My repo 输出:[ M , My ]原因条件:默认的 n-gram 长度为 1 到 2 个字符 |
结构化文本词元生成器 #
结构化文本词元生成器用于解析结构化文本,例如标识符、电子邮件地址、路径或邮政编码。
词元生成器 | 描述 |
---|---|
keyword | - 无操作词元生成器 - 原样输出整个字符串 - 可以与词元过滤器(如小写过滤器)结合使用以规范化词项 |
pattern | - 使用正则表达式模式在单词分隔符处将文本解析为词条,或捕获匹配的文本作为词条 - 使用 Java 正则表达式 |
simple_pattern_split | - 使用正则表达式模式在匹配处拆分文本,而不是将匹配项作为词条返回 - 使用 Lucene 正则表达式 - 比 pattern 词元生成器更快,因为它使用了pattern 词元生成器正则表达式的子集 |
char_group | - 在一组可配置的字符上进行解析 - 比运行正则表达式的词元生成器更快 |
path_hierarchy | - 在路径分隔符(默认是 / )处解析文本,并返回树层级中每个组件的完整路径 |