Sunspot полнотекстовый поиск с ИЛИ

У меня есть проект Rails с моделью User.
У него есть два поля: :name, :surnameТакже у меня есть поиск заката:

searchable do
  text :name
  text :surname
end

Когда я делаю такой поиск:User.solr_search { fulltext 'Name Surname' } .resultsКак получить результаты всех результатов в таком порядке:

  1. где имя и фамилия 'Name Surname'
  2. где только фамилия 'Surname'
  3. где только имя 'Name'

Также я нашел, но я не понимаю, что мне нужно https://github.com/sunspot/sunspot/wiki/Matching-substrings-in-fulltext-search

1 ответ

Решение

Вы можете использовать бустеры, чтобы результаты фамилий предшествовали результатам имен, а фамилии и именам результатов раньше фамилий.

searchable do
    text :surname, boost: 2.0
    text :name,    boost: 1.0
end

Вы просите, чтобы любой термин был сопоставлен, а затем заказываете их по убыванию на счет. Результаты, соответствующие имени и фамилии, будут оцениваться выше, только фамилия будет ниже, а только имя - наименьшим.

@search=User.search
    fulltext "#{name_variable} #{surname_variable}", :minimum_match => 1
    order_by(:score, :desc)
end
Другие вопросы по тегам