Rails 4 - поиск PG не возвращает точное совпадение с тегами

На рельсах 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

person Kathan    schedule 27.12.2015    source источник


Ответы (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] }

person tabishiqbal    schedule 03.01.2016