OR句の一致数に基づくランキング

トピック作成者:ks-solruserml-bot (2024/07/06 13:17 投稿)
5
CloseClose

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

私たちは、トピックやその他の特徴を持つ本を検索する検索エンジンを持っています。これらの特徴に基づいてファセットを行い、UIでユーザーが興味のあるトピックをチェックできるようにしています。ユーザーが複数のトピックをチェックすると、チェックされたトピックのいずれかを持つ本を取得するので、検索は離散的になります。

私の質問は、複数の選択されたトピックに一致する本を、1つのトピックにしか一致しない本よりも高くランク付けする方法はありますか?

ここでのトピックは一例に過ぎません。理想的には、SolrにdocValuesとしてしか持っていない特徴に対してこれを行いたいと考えていますので、Solrから返された後にそれらを並べ替えるには、可能であれば避けたい変更が必要です。

これは「クラシックな」質問かもしれませんが、GoogleやStackExchangeで回答を得られるクエリを作成することができませんでした。

ありがとうございます!

/Noah

返信投稿者:ks-solruserml-bot (2024/07/06 13:17 投稿)

こんにちは、Noahさん。

純粋なブールクエリを使用する場合、それはほぼデフォルトの動作です!
異なる動作が見られますか?
あなたのクエリは何ですか?

よろしくお願いします。

返信投稿者:ks-solruserml-bot (2024/07/06 13:18 投稿)

こんにちは、Alex。迅速な返答ありがとうございます。

おそらく(確認が必要ですが)、問題は他のいくつかの要素をデフォルトでブーストしていることだと思います。例えば、どのくらい頻繁に貸し出されたか、図書館に何冊のコピーがあるかなどです。それが(再度、確認が必要ですが)、fqsのOR句の一致数よりも優先されるように見えます。それは理解できますが、それを回避する方法はありますか?

返信投稿者:ks-solruserml-bot (2024/07/06 13:18 投稿)

分かりました、少し絞り込みました。この動作は次のように再現できます(/selectではなく/queryエンドポイントに送信しています)。選択したチェックボックスをフィルタとして送信しています(/select用語ではfqだと思います)。

{
"query": "dyr",
"filter": [
"work.subject_docval:(\"uddøde dyr\" \"forhistoriske dyr\")",
"doc_type:work"
],
"fields": "work.workid work.title work.creator work.subject_dbc score",
"offset": 0,
"limit": 100,
"params": {
"defType": "edismax",
"qf": [
"work.creator",
"work.title",
],
"sort": "score desc",
"debug": true,
"indent": true
}
}

このクエリでは、両方の主題を持つ最初の本がリストの10番目の結果になります。この句を「filter」から「q」に移動すると、両方の主題を持つ本がリストのトップに表示されます。

{
"query": "dyr AND work.subject_docval:(\"uddøde dyr\" \"forhistoriske dyr\")",
"filter": [
"doc_type:work"
],
"fields": "work.workid work.title work.creator work.subject_dbc score",
"offset": 0,
"limit": 100,
"params": {
"defType": "edismax",
"qf": [
"work.creator",
"work.title",
],
"sort": "score desc"
}
}

これは意図された動作ですか?

返信投稿者:ks-solruserml-bot (2024/07/06 13:18 投稿)

なぜqfがその2つのフィールドだけに設定されていて、subjectが含まれていないのでしょうか?また、qf内でブーストすることもできます。フィルタクエリはスコアに影響を与えず、クエリに合わないドキュメントを除外するだけです。

返信投稿者:ks-solruserml-bot (2024/07/06 13:18 投稿)

私は単純に問題を示すために可能な限り簡単な例を示そうとしていました。実際のクエリはそれよりも複雑です。

とにかく、fqがスコアに影響を与えないという点が問題の説明になると思います。助けてくれてありがとう。

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

KandaSearch

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

投稿の削除

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