2011-06-06 4 views
0

Я использую Thinking Sphinx для приложения Rails. Все работает отлично. Я просто хочу, чтобы мои результаты поиска учитывали оценки моих позиций (сначала появляются элементы с более высокой актуальностью).Rails Thinking sphinx добавить значение рейтинга в актуальность

define_index('item') do 
    # ... 
    indexes 'items.ratings_sum/items.ratings_count', 
    :as   => :rating, 
    :sortable => true 
    # ... 
end 

Я использовал опцию «sort_mode», но он уделяет слишком много внимания рейтингу, недостаточно для ключевых слов.

Как я могу использовать этот рейтинг для влияния на порядок результатов поиска?

ответ

1

Во-первых, вам нужно, чтобы это рейтинговое значение как атрибут - это не похоже на то, что люди собираются его искать, не так ли? И лучше, если он хранится как плавающий? Итак:

has 'items.ratings_sum/items.ratings_count', 
    :as => :rating, 
    :type => :float 

Следующий шаг - и это то, что вам придется настроить, чтобы получить его точно, как вам нравится - это использовать режим выражение сортировки:

Item.search 'foo', 
    :sort_mode => :expr, 
    :order  => "@relevance * rating" 

Может быть, вы только хотите рейтинг будет иметь 10% влияние на @ релевантность? @relevance * (rating/10). Или вы просто хотите добавить их? @relevance + rating. Играйте с ним, пока не найдете подходящее вам решение.