2009-08-28 13 views
3

私は、最大50万項目の共有データベースにアクセスできるアプリケーションの認証済みユーザーを持っています。それぞれのユーザーは、自分の公開しているWebサイトを持ち、自分のサイトに表示されている項目の優先順位を決める機能(upvoteと考える)が必要です。Luceneの検索結果カスタムオーダーリストによる並べ替え

500,000アイテムのうち、最大200個の優先アイテムを持つことができます。残りのアイテムの順序はあまり重要ではありません。

各ユーザーは、アイテムの優先順位を変更します。

私は最初に同様のmysql質問Mysql results sorted by list which is unique for each userを尋ねてきましたが、良い答えが得られましたが、私はより良いオプションが非SQLインデックス付きソリューションを選ぶことができると信じています。

これはLuceneで行うことができますか?、これにはさらに優れた検索技術がありますか?

ps。 Googleは検索結果に類似のタイプの設定を実装しており、ログインしている場合は自分の検索結果を優先して除外することができます。

更新:ドキュメントを読んでいて、メモリに保存された "ドキュメントごとの属性値"で探していることを行うことができます。スフィンクスの指導者からフィードバックを得ることに興味があります

答えて

2

アイテムのIDは、あなたのインデックスを構築する。そこ次のステップを行うにはいくつかの方法がありますが、簡単なものが優先項目を取り、それぞれの特別なアイテムのために、検索クエリにこのような何かをそれらを追加することになります。Xはブースト量をある

"OR item_id=%d+X" 

あなたは使いたいです。あなたはおそらく経験的にこの数字を微調整する必要があるでしょう。ただ単に「上書き」されているだけで、それが完全に無関係のものを探すリストの最上位に置かれないようにする必要があります。

このようにすると、結果セット全体を反復処理する必要がある多くの煩わしい後処理ステップを避けることができます。インデックスを照会することで正しいソートが行われることを願っています。

+0

私はmysqlなどで優先順位付けされたリストを格納し、user_idでこのリストをprorityで選択することを推測しています。このリストを使用して、あなたが示唆したようにlucene検索クエリ文字列を作成します。これはまだ定規に200個のアイテムがある場合、これはスケールされ、速く動作しますか? – ADAM

関連する問題