外部キーを含むドキュメントのブースト方法

トピック作成者:ks-solruserml-bot (2024/06/22 19:22 投稿)
2
CloseClose

(The bot translated the original post https://lists.apache.org/thread/lo1pcp65q7vfz0n3c59w5ng1ccpng85n into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)

こんにちは皆さん、

私は音楽アプリに取り組んでいます。私たちは曲があり、曲には複数のジャンルがあります。
私たちは曲とジャンルの関連を持つジョインテーブルを持っています。
私たちは各曲にジャンルのIDを整数としてインデックス化しています。

ユーザーがロック、ポップ、ブルースを検索した場合、以下のように検索結果を並べ替えたいと考えています:

  1. 全てのジャンル(ロック、ポップ、ブルース)を含む曲を優先的に表示する。
  2. ロックとポップ、ロックとブルース、またはポップとブルースを含む曲を次に表示する。
  3. ジャンルがロック、ポップ、またはブルースのいずれかに一致する曲を表示する。

言い換えると、全てのジャンルに一致する曲を最初に表示し、次に2つまたは3つのジャンルに一致する曲を表示し、最後に1つのジャンルにのみ一致する曲を表示したいです。

これは実現可能でしょうか?どのようにすれば実現できますか?

ありがとうございます。

Marko Avlijaš

返信投稿者:ks-solruserml-bot (2024/06/22 19:22 投稿)

ブーストクエリを使用することができます。ブーストクエリは、ジャンルを含む複数値フィールドに対する定数スコアのORクエリです:

(genre:1)^=1 OR (genre:2)^=1

genreフィールドには、ジャンルの整数値が含まれています。^=1は一致したものに対してスコア1を割り当てます。各一致についてスコアが合算されます。

Joel Bernstein
http://joelsolr.blogspot.com/

返信投稿者:ks-solruserml-bot (2024/06/22 19:22 投稿)

ありがとうございます。

とても助かりました。

試したことがあると思っていましたが、私は直接Solrを使っているのではなく、代わりにsunspot gem(Ruby)を使用しています。

それが可能でかつ比較的簡単であることを知ったので、今から解決してみます。

改めてありがとうございます。

トピックへ返信するには、ログインが必要です。

KandaSearch

Copyright © 2006-2024 RONDHUIT Co, Ltd. All Rights Reserved.

投稿の削除

この投稿を削除します。よろしいですか?