【问题标题】:Elastic search index for Ngram?Ngram的弹性搜索索引?
【发布时间】:2017-12-23 04:42:03
【问题描述】:

说我有句This is a new city

  1. 弹性搜索是否为单词的所有可能排列/组合创建索引。例如对于单词“city”,它会创建索引“it”、“ty”、“ity”、“cit”等吗?
  2. 这些索引是在文档存储时还是在运行时创建的?
  3. 这些索引是保存在内存中还是数据库中?

【问题讨论】:

    标签: elasticsearch lucene n-gram


    【解决方案1】:
    1. 这取决于您的tokenizer。默认情况下,Elasticsearch 使用Standant Tokenizer 其中divides text into terms on word boundaries, as defined by the Unicode Text Segmentation algorithm. 这意味着您的句子将被标记为this, is, a, new, city。如果您愿意,可以创建自定义标记器。

    2. 当您将文档放入 Elasticsearch 时,它们会被编入索引。

    3. 数据保存在文件系统中:https://www.elastic.co/blog/found-dive-into-elasticsearch-storage

    这是一篇关于内部的博文:https://www.elastic.co/blog/found-elasticsearch-from-the-bottom-up

    【讨论】:

    • 关于第 1 点的一个问题。默认情况下,当我输入部分单词 it 时,弹性搜索是否不会搜索单词 city?我是否需要创建自定义标记器来为每个单词的可能字谜创建索引?
    • 它会根据您的查询类型而变化。对于这样的匹配,您可以使用wildcard 查询和*it*。参考:elastic.co/guide/en/elasticsearch/guide/current/….
    • 当您说For such a match you can use .. 时,您是在要求最终用户使用通配符吗?我以为 ES 会自动完成?
    • ES 有很多搜索选项。在你的情况下,他们中的大部分都按照this, is, a, new, city 的条款工作。当然,您也可以使用自定义标记器将it 作为术语进行索引。然后你可以使用除wildcard之外的普通查询。
    • 以google搜索为例。即使我输入cty 而不是city,它也会搜索城市。谷歌或任何其他类似的引擎是否会为文档中所有可能的单词变位词创建索引?
    猜你喜欢
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2020-08-28
    • 2016-10-24
    相关资源
    最近更新 更多