0

検索 (solr) でクリックスルーの関連性ランキングを実装したいと考えています。基本的に、ユーザーのフィードバック (クリック) に応じて、検索結果の順序を変更したいと考えています。以下は私のアプローチです。

結果/ドキュメントがアクセスされた (またはクリックされた) クエリをインデックス化するために、ドキュメントに新しいフィールドを追加します。結果がクリックされるたびに、インデックスが更新され、結果がクリックされたクエリが含まれるようになります。solr の部分更新を使用して、新しいクエリをインデックスに追加します。データ ストアとしてもインデックスを使用するため、すべてのフィールドが保存され、もう 1 つのフィールドを保存する余裕があります。

これは、この機能を実装するための正しいアプローチですか?

4

1 に答える 1

1

注:私はまだロギングを評価する必要があり、(まだ)それを実装することはできません。そもそも要件仕様を作成していて、それを作成しました。
以下のとおりです。

Evaluate user selection (Click through) for `query` and matched result position.

位置は関連性を決定するので重要です。

上位の結果を3に選択しました(仮定N=3)。

  1. ユーザーがを含むものを選択している場合N>3は、クエリのこの結果ブーストを増やすことが重要です。
  2. 位置がにある場合N<=3、私たちは良いです。
  3. 位置が一貫してにある場合はN<=3、上位の結果を降格します(多分?)

ただし、ここで多くの間違った情報を取得する可能性があります。1人のユーザーが夢中になり、まったく関係のない結果をクリックしたとします。

したがって、基本的な位置だけでなく、使用状況を監視し、ユーザーイベントもログに記録し、クリックしてこれをカバーする必要があります。

したがって、ログをオンにする必要があります:

  • 1ページあたりの結果をクリックします{user-login|session}
  • の結果をクリックし{Query + Filters + Facets}ます。{did you mean... | autocomplete}クリックイベント用の特別なフラグ。{TimeStamp + Location}

かなりの数のユニークユーザーが時間範囲(月)の間に低スコアのドキュメントをクリックすることを示した場合、私は場所に応じてドキュメントをブーストします。

ユーザーセッション(ログイン)を相互に関連付けているので、ユーザーに応じて結果をマッピングできる可能性があります(ユーザーによって生成された無関係なノイズの場合は、ユーザーに返送してください; P)。

しかし、私はあまりブーストを入れないように最善を尽くします。検索が改ざんされているように見える場合があります。

また、ユーザーが記入するフィードバックフォームは、あなたがどれだけうまくいっているのかを確認するための良いアイデアかもしれません。

于 2012-12-31T08:45:01.817 に答える