Rails 4 - PG Search не возвращает точное совпадение с тегами
На рельсах 4 действует как драгоценный камень. Мой поиск в настоящее время не возвращает точные соответствия в первую очередь. Кажется, что теги неправильно взвешиваются. Когда я избавлюсь от :associated_against => { :tags => {:name => 'D'}}
точные совпадения возвращаются первыми. Кто-нибудь сталкивался с этим вопросом раньше? Какие-либо предложения?
Вот моя область поиска:
pg_search_scope :search, :against => { :specific => 'A', :title => 'B', :aka => 'B'},
:associated_against => { :tags => {:name => 'D'}},
:using => { dmetaphone: {}, tsearch: { dictionary: 'english' },
trigram: {:threshold => 0.3} },
ignoring: :accents
1 ответ
Можете ли вы опубликовать остальную часть вашего кода в контроллере и т. Д. У меня есть следующее в моем приложении:
# tools.rb
include PgSearch
pg_search_scope :search_including_tags,
:against => [:description, :barcode],
:associated_against => {:tags => [:name] }
Затем в моем контроллере для поиска у меня есть:
#tools_controller.rb
def index
if params[:search]
@tools = Tool.where("(barcode) LIKE (?)", "%#{params[:search]}")
elsif params[:tag]
@tools = Tool.tagged_with(params[:tag])
elsif params[:id]
@tool = Tool.find(params[:id])
else
@tools = Tool.all
@tool = Tool.first
end
end
и, наконец, для моего контроллера поиска
def new
@tools = Tool.search_including_tags(params[:query])
end
Надеюсь это поможет. Не могу сказать много, не видя весь код. Но в итоге я использовал это, которое сработало: :associated_against => {:tags => [:name] }