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] }

Другие вопросы по тегам