Search-as-you-type 数据类型和 Edge NGram Tokenizer 之间有什么区别?

What's the difference between Search-as-you-type datatype and Edge NGram Tokenizer?

无法理解将 Search-as-you-type 数据类型设置为字段、在分析器中设置 Edge NGram Tokenizer 以及添加 index_prefixes 参数之间的区别。在我看来,他们毕竟做同样的工作。

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-as-you-type.html https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-edgengram-tokenizer.html https://www.elastic.co/guide/en/elasticsearch/reference/current/index-prefixes.html

edge_ngram 是分词器,这意味着它会在索引时启动以分词化您的输入数据。还有一个 edge_ngram 标记过滤器。两者相似,但工作级别不同。

search_as_you_type 是一种字段类型,它包含一些子字段,其中一个称为 _index_prefix,它利用了 edge_ngram 分词器。

所以基本上,当他们决定添加新的 search_as_you_type 字段类型时,您在 edge_ngram 分词器文档中看到的内容实际上已被利用。

Rafiqul 是正确的 search_as_you_go 是使用 edge_ngram 构建的,但它也包含了 shingles 的概念。 Shingles 是一组词,它允许 search_as_you_go 更好地处理多词查询。

请注意,search_as_you_go 要求单词按输入的顺序排列,这对于电影片名等已知实体而非自由格式文档尤其理想。