我正在使用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]
自从我使用 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
可能会返回一个不同的集合。