sql - 如何让elasticsearch执行类似于SQL 'LIKE'

标签 sql ruby-on-rails ruby-on-rails-3 postgresql elasticsearch

如果使用 SQL 'Like' 语句查询数据,即使只有部分匹配,它也会返回数据。例如,如果我正在搜索食物,并且在使用 SQL 时我的数据库中有一个名为“raisins”的项目,即使我的搜索只包含“rai”,查询也会返回“raisins”。在 elasticsearch 中,查询不会返回记录,除非指定了整个名称(在本例中为“raisins”)。如何让 elasticsearch 的行为类似于 SQL 语句。我正在使用 Rails 3.1.1 和 PostgreSQL。谢谢!

最佳答案

在为 elasticsearch 创建模型索引时,在索引上使用 tokenizer 将满足您的要求。为了。例如

tokenizer: {
              :name_tokenizer => {type: "edgeNGram", max_gram: 100, min_gram: 3, side: "front"}
           }

这将创建大小从 3 到 100 个字段的标记,并且作为前面给出的边,它将从头开始检查。您可以从此处获得更多详细信息 http://www.slideshare.net/clintongormley/terms-of-endearment-the-elasticsearch-query-dsl-explained

关于sql - 如何让elasticsearch执行类似于SQL 'LIKE',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10648030/

相关文章:

mysql - SQL 将列值除以另一列

css - 如何在 application.css 中要求特定文件

html - rails : image exists but is not rendered in production even though rendered in development

ruby-on-rails - Ruby/Rails 依赖注入(inject)

ruby - 关于使用 gsub 有什么建议吗?在 irb 控制台中工作正常,但不会在实际文件中查找/替换

ruby-on-rails - 条件匹配时跳出循环

mysql - 查询每个日期和车型的额外预订数量

MySQL获取两个条件之间范围的id

sql - 查询获取不活跃用户

ruby-on-rails - 回形针:每次更新(无关属性)时调用 copy_to_local_file