3

アプリケーションで、最大 500,000 アイテムの共有データベースにアクセスできるユーザーを認証しました。各ユーザーは、独自の公開 Web サイトを持っており、自分のサイトに表示されている項目に優先順位を付ける (賛成票を考える) 機能が必要です。

500,000 個のアイテムのうち、優先順位の高いアイテムは最大 200 個しかないため、残りのアイテムの順序はそれほど重要ではありません。

ユーザーごとにアイテムの優先順位が異なります。

私は最初に同様の mysql の質問をここで行いました。Mysql の結果は、各ユーザーに固有のリストでソートされ、良い答えが得られましたが、非 sql インデックス付きソリューションを選択することをお勧めします。

これは Lucene で実行できますか?、これに適した別の検索テクノロジはありますか?

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

更新:ドキュメントを読んでいて、メモリに保存されている「ドキュメントごとの属性値」で探していることを実行できると信じているため、スフィンクスで再タグ付けされました-スフィンクスの達人からこれに関するフィードバックを聞くことに興味があります

4

1 に答える 1

2

インデックスを作成するときは、必ずアイテムの ID を各ドキュメント オブジェクトに格納する必要があります。次のステップを実行するにはいくつかの方法がありますが、簡単な方法は、優先順位の高いアイテムを取得して検索クエリに追加することです。特別なアイテムごとに次のようにします。

"OR item_id=%d+X"

ここで、X は使用したいブーストの量です。おそらく、この数値を経験的に微調整して、「賛成」されただけで、まったく関係のないものを検索するリストの一番上に表示されないようにする必要があります。

このようにすることで、少なくとも、結果セット全体を反復処理する必要がある面倒な後処理の多くのステップを回避できます。うまくいけば、インデックスのクエリから適切な並べ替えが行われることを願っています。

于 2009-08-28T21:35:21.120 に答える