2011-06-06 11 views
0

私はRailsアプリケーションにThinking Sphinxを使用しています。すべてが完璧に動作します。検索結果にアイテムの評価を考慮してほしい(関連性の高いアイテムが最初に表示されます)。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" 

たぶん、あなたが唯一の希望@relevanceに10%の影響を与える評価? @relevance * (rating/10)。または、2つを追加したいだけですか? @relevance + rating。あなたが好きな解決策が見つかるまでそれを試してみてください。

関連する問題