Adakah yang bisa memberikan saran tentang hal berikut?
Saya menggunakan searchkick / elasticsearch dan ingin mencari istilah kunci atau istilah di berbagai bidang (nama, pabrikan). Jadi misalnya jika saya mencari produk bernama "produk saya" yang dibuat oleh "produsen tertentu" saya, saya berharap hasil ini muncul jika saya mencari "produk saya", "produsen tertentu" atau "produsen produk saya" karena kedua istilah ini disertakan. di kolom nama atau pabrikan.
Masalah saya adalah sebagai berikut:
@products = Product.search query
Mengizinkan semua istilah pencarian yang tercantum di atas dan mengembalikan hasil yang diharapkan segera setelah saya menambahkan
@products = Product.search query, fields: [:name, :manufacturer_name]
Ini hanya akan mengembalikan hasil untuk "produk saya", atau "perusahaan tertentu", tetapi tidak "produk saya perusahaan tertentu".
Sekarang ini bukan masalah besar karena saya dapat menghapus opsi bidang sepenuhnya TETAPI saya perlu menggunakan searchkicks word_start untuk bidang nama. Jadi pertanyaan terakhir saya adalah seperti ini:
@products = Product.search query, fields: [{name: :word_start}, :manufacturer_name]
Saya ingin pengguna mencari string pertama produk dan dapat memasukkan produsen juga misalnya "myprod somecompany" sayangnya ini tidak memberikan hasil apa pun ketika saya berharap ini akan mengembalikan produk bernama myproduct, dibuat oleh somecompany.
Apakah saya melewatkan sesuatu yang sangat jelas di sini? Saya dapat mengubah tambahan
operator: 'or'
tetapi sebenarnya saya ingin dapat melakukan pencarian sebagian pada nama, menambahkan istilah tambahan dan jika keduanya ada untuk catatan tertentu maka akan dikembalikan.
inilah kode model saya juga
class Product < ActiveRecord::Base
searchkick word_start: [:name]
end
Terima kasih