Elasticsearch中Edge N Gram什么时候创建分析链
When is the analysis chain created for Edge N Gram in Elasticsearch
我试图找出哪个更适合增量搜索 - edge n gramm 或 completion suggester。到目前为止,我在 Internet 上读到的内容表明,对于完成建议器,数据处理是在创建索引时完成的,而对于边缘 n 克,它是在查询时完成的,因此它比完成建议器慢。然而,就在 Elasticsearch - The definitve guide 中,我读过这本书,对于 edge n gram 也是在索引时完成的。现在我真的很困惑,任何人都可以清楚地知道 edge n gram 在内部是有效的。
谢谢
两者都在索引时起作用,构建专用数据结构:
- N gram 分词器生成分词:"hello world" 变为 "h"、"he"、"hel"..."worl"、"world"。使用通常的 "text"(又名 "string")映射类型。
- completion suggester 生成图表:参见 https://www.elastic.co/blog/you-complete-me。此时,有一个特殊的映射类型"completion".
在搜索时,建议者更便宜:
- N 克分词器:
- 必须分析键入的文本,搜索到的结果词:搜索到的 "Hello Wor" 应分析为 "hello"+"wor" 并搜索这 2 个词。
- 然而,应该从分析中删除 N gram 分词器(在搜索和索引之间使用不同的分析器):搜索 "Henry" 将被分析 "h"、"he"、"hen", "henr"... 并且会 return "hello" 因为它们共享相同的前缀 "he".
- 完成建议更简单、更快捷。如果您尝试在用户在键盘上键入时自动完成搜索,性能很重要。
在这两种情况下,您都可以使用自定义分析链(法语、德语、soundex...):
- N克:
- 编写时间:自定义分析+边缘ngram+类型"text"
- 阅读时间:自定义分析+截断+搜索API
- 完成
- 写时间:自定义分析+打字"completion"
- 阅读时间:自定义分析+建议API
我试图找出哪个更适合增量搜索 - edge n gramm 或 completion suggester。到目前为止,我在 Internet 上读到的内容表明,对于完成建议器,数据处理是在创建索引时完成的,而对于边缘 n 克,它是在查询时完成的,因此它比完成建议器慢。然而,就在 Elasticsearch - The definitve guide 中,我读过这本书,对于 edge n gram 也是在索引时完成的。现在我真的很困惑,任何人都可以清楚地知道 edge n gram 在内部是有效的。
谢谢
两者都在索引时起作用,构建专用数据结构:
- N gram 分词器生成分词:"hello world" 变为 "h"、"he"、"hel"..."worl"、"world"。使用通常的 "text"(又名 "string")映射类型。
- completion suggester 生成图表:参见 https://www.elastic.co/blog/you-complete-me。此时,有一个特殊的映射类型"completion".
在搜索时,建议者更便宜:
- N 克分词器:
- 必须分析键入的文本,搜索到的结果词:搜索到的 "Hello Wor" 应分析为 "hello"+"wor" 并搜索这 2 个词。
- 然而,应该从分析中删除 N gram 分词器(在搜索和索引之间使用不同的分析器):搜索 "Henry" 将被分析 "h"、"he"、"hen", "henr"... 并且会 return "hello" 因为它们共享相同的前缀 "he".
- 完成建议更简单、更快捷。如果您尝试在用户在键盘上键入时自动完成搜索,性能很重要。
在这两种情况下,您都可以使用自定义分析链(法语、德语、soundex...):
- N克:
- 编写时间:自定义分析+边缘ngram+类型"text"
- 阅读时间:自定义分析+截断+搜索API
- 完成
- 写时间:自定义分析+打字"completion"
- 阅读时间:自定义分析+建议API