2011-12-07 12 views
1

私たちは、文書内のすべての用語の位置が「エンジンスコア」に関連付けられているアプリケーションを持っています。 用語クエリは、用語頻度ではなく、文書内の用語の「エンジンスコア」の合計に従って採点されます。 例えば、平均エンジンスコアが100である用語頻度5は、エンジンスコア500での頻度1と同等でなければなりません。Lucene - 得点とペイロード

ペイロード内の位置ごとにエンジンスコアを維持すると、 PayloadFunctionのサマリーバージョンを組み合わせてscorePayloadを使用して、ドキュメント内の用語のエンジンスコアの合計を取得することができ、それで目標を達成することができます。

  1. パフォーマンスの問題である可能性がありペイロードを、得るために位置ファイルをスキャンする必要があるとしても、最も単純な用語のクエリ:

    は、このソリューションには2つの問題があります。 用語の頻度に加えて、文書ごとにエンジンスコアの合計を事前に索引付けすることをお薦めします。これはドキュメントレベルのペイロードです。 Luceneはこの問題をサポートしているのですか?

  2. フレーズオカレンスの「エンジンスコア」は、フレーズを構成するタームのエンジンスコアの乗算として定義されます。 scorePayloadでは、フレーズのオカレンスに適切なスコアを付けるために、フレーズのすべての用語のペイロードが必要です。

私が理解する限り、scorePayloadの現在のインターフェイスはこの情報を提供しません。

これはLuceneでこれを実現する別の方法がありますか?

答えて

-1

ドキュメントレベルのペイロードの回避策は、特別な名前のフィールド(他のすべてのLuceneドキュメントフィールド名とは異なる)としてドキュメント全体のエンジンスコアだけを含む単一のLuceneドキュメント/ドキュメントを作成することです。その後、検索中にその文書を結合/抽出することができます。回避策の多くはありませんが、そこにはあります。

関連する問題