2013-12-17 2 views
0
def self.search(params) 
    return [] unless params[:query].present? 
    tire.search(load: true) do 
    query { string(params[:query], fields: %w(title description topics  
    username discussions)) } 
    sort do 
    by "likes", "desc" 
    by "badges_count", "desc" 
    end 
    facet :tags do 
    terms :tags 
    end 

    facet :topics do 
    terms :topics 
    end 

    size params[:size] || 5 
    end.results 
end 

Я пытаюсь выполнить поиск по определенной модели. Хотя результаты в настоящее время сортируются на основе самых разных, и я хотел бы основывать их больше на процентной основе для каждого столбца в блоке сортировки.Сортировка результатов поиска по столбцам с помощью шины с жемчужиной для рельсов проект

, например:

50% для "подобных" на основе силы семантического матча в другой колонке (: заголовок) 20% для "badges_count" на основе "badges_count"

Любая помощь будет отлично, поскольку я немного зациклен на том, как расширить блок больше и создать мини-алгоритм для сортировки по весу.

ответ

0

Укажите свои столбцы с настройками форсирования. например:

class YourParticularModel 
    mapping do 
    indexes :likes,   boost: 100 
    indexes :badges_count, boost: 40 
    # .... other indexes 
    end 
end 

Затем удалить вид из метода поиска. Результат запроса будет автоматически взвешивать симпатии и совпадения badges_count.

Смежные вопросы