【问题标题】:Searchkick neo4j: search not working?Searchkick neo4j:搜索不起作用?
【发布时间】:2017-01-13 18:59:44
【问题描述】:

我用过 gem searchkick & gem neo4j

class User
  include Neo4j::ActiveNode

  property :first_name
  property :last_name
  property :email

  searchkick callbacks: :async

  def search_data
    {
      first_name: first_name,
      last_name: last_name,
      email: email
    }
  end
end

(User.search 'suresh', fields: [:first_name, :last_name]).count => 22

(User.search 'sures', fields: [:first_name, :last_name]).count => 0

即使我输入Su,我也想得到所有结果,请帮帮我?

布赖恩建议

(User.search('su', fields: [:first_name, :last_name], 拼写错误: {edit_distance: 2})).map(&:first_name)

=> ["Sam", "Marilet", "aa", "asd", "Maricel"]

(User.search('sure', fields: [:first_name, :last_name], 拼写错误: {edit_distance: 3})).map(&:first_name)

=> ["Herlinda", "Brent", "Andy", "suresh"]

【问题讨论】:

    标签: ruby-on-rails elasticsearch searchkick neo4j.rb


    【解决方案1】:

    您应该可以使用edit_distance 选项:

    https://github.com/ankane/searchkick#misspellings

    例子:

    User.search('suresh', fields: [:first_name, :last_name], misspellings: {edit_distance: 2})
    

    【讨论】:

    • 谢谢@brian 我已经粘贴了你给出的答案的输出,但似乎有些问题?
    • 你可以先试试User.reindex
    • 我已经添加了我所做的确切更改,感谢您的帮助
    【解决方案2】:

    在查看了@brains 的建议和更多研究之后,我能够通过以下更改来实现它

    更新后的模型如下所示:

    class User
      include Neo4j::ActiveNode
    
      property :first_name
      property :last_name
      property :email
    
      searchkick word_start: [:first_name, :last_name]
    
    
      def search_data
        {
          first_name: first_name,
          last_name: last_name
        }
    end
    

    更新后的查询如下所示:

      users = User.search('su', operator: "or",
                                        fields: [:first_name, :last_name],
                                        misspellings: {below: 5},
                                        match: :word_start,
                                        where: {id: mutual_stay_pal_ids},
                                        page: params[:page], per_page: 10)
    

    更改后不要忘记重新索引数据User.reindex

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多