【问题标题】:Neo4j.rb How to use it with RailsNeo4j.rb 如何在 Rails 中使用它
【发布时间】:2018-03-14 12:45:38
【问题描述】:

我使用的是 neo4j 3.X 版,我使用的是 searchkick

目前正在使用

User.search(params[:term], operator: 'or',
     fields: [:first_name, :last_name],
     misspellings: { below: 5 },
     match: :word_start,
    page: params[:page], per_page: params[:rpp], padding: params[:offset])

而不是

User.where('(sp.first_name + sp.last_name) =~ ?', /.*#{params[:term].sub(/\s/, '')}.*/i)

但是我有一个问题,我必须在搜索的同时进行更多的密码查询如何做到这一点?

例如

Neo4j::ActiveBase.new_query.match(n: {User: { uuid: current_user.uuid }}).break
               .match('(n)-[:connected_to {status: 2}]-(sp:User)')
               .return('DISTINCT sp')

我想在这个查询中使用名字和姓氏进行弹性搜索

在我的模型中我定义了searchkick word_start: [:first_name, :last_name]

【问题讨论】:

    标签: cypher neo4j.rb


    【解决方案1】:

    我使用searchkick 已经有一段时间了,但我建议尝试使用ActiveNode 语法而不是neo4j-core Query 语法,以便您可以在末尾附加.search

    current_user.connected_users.rel_where(status: 2).distinct.search(...)
    

    这是假设有一个使用connected_to 关系类型的connected_users 关联。您的 User 模型中可能还有另一个类似的关联,但我不知道它是什么。

    我不能 100% 确定 distinct 是否可以与 search 一起使用,但您也许可以删除 .distinct 部分,searchkick 可能会返回给您一个不同的集合。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多