Neo4j.rb Как использовать его с Rails

Я использую 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]


person Vishal G    schedule 14.03.2018    source источник


Ответы (1)


Прошло некоторое время с тех пор, как я использовал searchkick, но я бы посоветовал попробовать использовать синтаксис ActiveNode вместо синтаксиса neo4j-core Query, чтобы вы могли добавить .search в конце:

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

Предполагается, что существует ассоциация connected_users, использующая тип отношения connected_to. У вас может быть другая похожая ассоциация в вашей модели User, но я не знал, что это такое.

Я не уверен на 100%, будет ли distinct работать с search или нет, но вы, возможно, могли бы отказаться от части .distinct, и searchkick все равно вернул бы вам отдельный набор.

person Brian Underwood    schedule 14.03.2018