2012-02-01 15 views
0

私は記事データベースを検索するために思考のスフィンクスを使用しています。作成日に重み付けしたいので、新しい記事が最初に表示されますが、関連性に関係なく最新の記事が表示されるので、並べ替えを使用したくありません。思考するスフィンクスで記事の作成日をどのように重み付けできますか?

作成日に重み付けできる方法はありますか?新しい記事を表示する傾向がありますが、他の要素も考慮しますか?

答えて

2

独自のソートアルゴリズムを作成し、重みと作成タイムスタンプの両方を混合する必要があります。おそらく、タイムスタンプをコアウェイトとして使用するのが最善です。デフォルトではより大きな値になるため、関連度スコアを上げてから追加してください。

Model.search :sort_mode => :expr, :order => 'created_at + (@weight * 1000)' 

は、この上の詳細についてはThinking Sphinx docsを参照してください - とSphinx docsも、利用可能な数学的な機能をカバーしています。

+0

私はそのようなことをしました。 ::=>:days_old、:type =>:integer'、次に::order => '@weight *(1)インデックスにカスタムフィールドを作成しました。 +(1/days_old)) ' – Diego

+0

あなたがSphinx v1またはv2を使用している場合は、Patがここで説明しているように、タイムセグメントソートを試みることもできます:http://pat.github.io/thinking-sphinx/searching/ts2。 html#sorting –

+0

これは、体重が大きく、最近のレコードでは壊れることがあります。オーバーフローして総スコアがゼロに近くなります。同じ効果を達成するために '@weight * 10 + created_at/100'を使用しましたが、問題の種類... – davidhq

関連する問題