15

索引付けと検索のフレームワークを探して Web をブラウジングしていたところ、Solr に出会いました。絶対に必要な機能は、ヒットが含まれるフィールドに基づいて結果をブーストすることです。

小さな例:

次のようなレコードを考えてみましょう:

<movie>
  <title>The Dark Knight</title>
  <alternative_title>Batman Begins 2</alternative_title>
  <year>2008</year>
  <director>Christopher Nolan</director>
  <plot>Batman, Gordon and Harvey Dent are forced to deal with the chaos unleashed by an anarchist mastermind known only as the Joker, as it drives each of them to their limits.</plot>
</movie>

titleたとえば、alternative_titleとフィールドを 1 つの検索フィールドに結合したいのですがplot、Solr/Lucene のドキュメントとチュートリアルを見ればそれほど難しくありません。
ただし、ヒットした映画はヒットした映画よりもスコアが高く、ターン中の映画はフィールドのヒットよりもスコアが高くなることも望んでtitlealternative_titleますplot
XML でこの種のスコアリングを示す方法はありますか、それとも独自のスコアリング アルゴリズムを開発する必要がありますか?

また、私が示した例は架空のものであり、実際のデータにはおそらく 100 以上のフィールドが含まれることにも注意してください。

4

3 に答える 3

11

これが、Solr の DismaxQueryParser が設計された目的です。http://wiki.apache.org/solr/DisMaxRequestHandlerを参照してください

多くのパラメーターがありますが、カスタマイズする必要がある主なパラメーターは「qf」です。これは、検索するフィールドとそれぞれのブーストを指定する方法です。したがって、タイトルを支配したい場合は、次のように指定できます。

タイトル^10 代替タイトル^2 監督^1 プロット^1

qf パラメータの値として。これは、構成例をカスタマイズしてそこから実験することで設定できます。

于 2010-03-15T19:20:54.747 に答える
6

Solr は使用していませんが、Lucene は使用しています。見てみると:

http://wiki.apache.org/solr/SolrQuerySyntax

それは、Solr のクエリ構文が Lucene のスーパーセットであると述べています。Lucene では、フィールドごとのブーストを実行する方法は、ニンジン演算子の後に任意の値を使用することです。つまり、

title:batman^10 alternative_title:batman

クエリ時にこれを行う利点は、ブースト値をその場で微調整して、関連性の基準に一致させることができることです。したがって、ブースト値 10 が高すぎる場合は、それに応じて微調整できます。

于 2010-03-12T14:50:56.677 に答える
1

これが 1 つの検索に固有のものではなく、サイト全体に固有の機能である場合。インデックス作成時にタイトルをブーストできます。ブースティングは、フィールドに高い関連性スコアを与えます。これはまさにあなたが望むものです。

このリンクをチェックしてください:

http://wiki.apache.org/solr/UpdateXmlMessages#Optional_attributes_for_.22field.22

于 2010-03-11T19:27:43.727 に答える