加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Elasticsearch和Rails:使用ngram搜索单词的一

发布时间:2020-12-17 02:06:48 所属栏目:百科 来源:网络整理
导读:我想在我的项目中使用Elasticsearch-Gem.据我了解:到现在为止,不再需要轮胎宝石,或者我错了? 在我的项目中,我有一个搜索(obivously),目前适用于一个模型.现在我试图避免使用通配符,因为它们不能很好地扩展,但我似乎无法让ngram-Analyzers正常工作.如果我搜
我想在我的项目中使用Elasticsearch-Gem.据我了解:到现在为止,不再需要轮胎宝石,或者我错了?

在我的项目中,我有一个搜索(obivously),目前适用于一个模型.现在我试图避免使用通配符,因为它们不能很好地扩展,但我似乎无法让ngram-Analyzers正常工作.如果我搜索整个单词,搜索仍然有效,但不适用于部分内容.

class Pictures < ActiveRecord::Base

  include Elasticsearch::Model
  include Elasticsearch::Model::Callbacks

  settings  :analysis => {
          :analyzer => {
            :my_index_analyzer => {
                :tokenizer => "keyword",:filter => ["lowercase","substring"]
            },:my_search_analyzer => {
              :tokenizer => "keyword","substring"]
            }
          },:filter => {
            :substring => {
              :type => "nGram",:min_gram => 2,:max_gram => 50
            }
          }
    } do  
mapping do
  indexes :title,:properties => {
    :type => "string",:index_analyzer => 'my_index_analyzer',:search_analyzer => "my_search_analyzer"
  }

也许有人可以给我一个正确方向的暗示.

解决方法

我放弃了在模型类中定义模式.事实上,它也没有多大意义.

所以这就是我所做的.模式/映射定义db /文件夹和构建它的rake任务.

https://gist.github.com/geordee/9313f4867d61ce340a08

在模型中

def as_indexed_json(options={})
  self.as_json(only: [:id,:name,:description,:price])
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读