在 rails 应用程序中使用 elasticsearch 逐字母索引

index letter by letter with elasticsearch in rails app

有谁知道在 elasticsearch 中逐字母索引数据的最佳方法是什么。我有 rails 应用程序 我在我的应用程序中使用 elasticsearch 作为搜索引擎。在我的 rails 应用程序中,我有很多包含文章的内容,在我的实现中,我可以搜索文章并且 return 结果完美,我有多个过滤器,如 ngram - edge gram - whitespace 和...... .如果用户输入准确的完整单词,一切都很好,并且根据我的设计,我有一些像 ngram 这样的过滤器,在这种情况下,如果 he/she 输入一个字母 he/she 可以 return 一些结果,我想帮助用户我可以用 where 命令处理这个 ponit,但我想用 elastics 来处理。 我m looking through elastices tutorials and best practices but none of them can不会帮助我,在最好的情况下,如果用户键入至少三个或四个字母 elastices 可能会 return 结果。 我正在使用 ngram 过滤器 边缘克过滤器 正则表达式 和 ... 但其中 none 个很有用。

您需要在 elasticsearch 中使用 suggest 查询,如下所示:

{
 "suggest": {
 "auto-complete-suggest": {
 "prefix": "Your prefix text",
 "completion": {
  "size" : 5,
  "field": "text_completion"
 
      }
    }
  }
}

你的映射应该是这样的:

{
  "mappings": {
    "properties": {
      "text_completion": {
        "type": "completion",
        "analyzer": "Your analyzer"
      }
    }
  }
}