Pertanyaan Bagaimana cara menerapkan pencarian lanjutan dengan operator dengan pg_search?


Saya telah menerapkan PgSearch pada saya Node model seperti ini:

include PgSearch
pg_search_scope :node_search, against: [:name, :user_id, :circa],
    using: { tsearch: { any_word: true} },
    :associated_against => {
      comments: [:message],
      user: [:first_name, :last_name, :email],
      memberships: [:relation]
    }

Dan di controller saya, saya punya ini:

if params[:search]
  @nodes = Node.node_search(params[:search])
end

Idealnya, apa yang saya ingin dapat lakukan meskipun, adalah apakah seseorang dapat mengetikkan representasi teks (bendera) dari salah satu asosiasi dan memiliki filter pencarian hanya pada bendera itu.

Misalnya. katakan: "name: Bouncing Ball", di mana pencarian akan dilakukan hanya pada kolom yang disebut name pada nodes model. Aka ... itu akan mencari semua node dengan nama itu Bouncing Ball dan tidak mencari kolom atau model lain atau bahkan asosiasi apa pun.

Tentu saja, saya ingin dapat melakukan penelusuran seperti: owner: John Brown (yang mencari semua node yang pemilik / pengguna first_name dan last_name adalah John Brown), comment: Manhattan (Yang mencari semua node yang memiliki komentar dengan teks Manhattan dalam salinan, dan seterusnya.

Bagaimana saya mencapai ini dengan PgSearch?


10
2018-05-26 23:48


asal


Jawaban:


Sudahkah Anda mencoba menggunakan kombinasi "Cakupan pencarian dinamis"dengan beberapa pengontrol pemrosesan string pencarian?

name: Bob, menguraikan kolom / hubungan dan nilai pencarian lalu meneruskannya ke pg_search_scope dengan blok lambda?


4
2018-05-29 14:38