ネストとpfパラメータに関する可能な問題

トピック作成者:ks-solruserml-bot (2024/06/26 20:18 投稿)
1
CloseClose

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

こんにちは、

このフォーラムに初めて投稿しますので、もし既知の問題であれば申し訳ありません。また、以前の投稿を十分に読んでいない場合もあるかもしれません。

私は図書館データを含むSolrで作業しています。私たちのデータには、"作品"があり、その"作品"に対するさまざまな"pid"(または表現)の子ドキュメントが存在するネスト構造があります。典型的な例としては、「ハリー・ポッターと賢者の石」がありますが、これにはオーディオブック、電子書籍、そしてもちろん、物理的な本など、さまざまな表現(pid)があります。タイトルや著者などの情報は作品レベルで保持され、資料タイプ(本/オーディオブック/電子書籍)や年などの情報は、子ドキュメントのpidレベルで保持されます。これが簡略化された説明ですが、私たちの試みを伝えるはずです。

必要に応じて、Solrのスキーマ全体を提供できますが、多くの情報が含まれており、どれが有益な情報であるかはわかりません。必要であれば提供することもできますが、まずは私が苦労している問題の簡略化されたバージョンを説明しようと思います。デンマークの作家ハンス・シェルフィグという作家がいますが、彼の物理的な本を検索したいです。Solrに対してこのクエリを発行します。queryレベルでデバッグを有効にしています。

{
  "query": "(scherfig)+{!parent which='doc_type:work' v='pid.material_type:("bog")'}",
  "filter": [
    "doc_type:work"
  ],
  "fields": "work.workid work.title, [child childFilter='pid.material_type:("bog")']",
  "offset": 0,
  "limit": 1,
  "params": {
    "defType": "edismax",
    "qf": [
      "work.creator",
      "work.title",
      "pid.material_type"
    ],
    "pf": "work.creator",
    "sort": "score desc",
    "debug": "query"
  }
}

このクエリを、Solrの /query エンドポイントに送信します(コア名は simple-search です)。

curl -H "Content-Type: application/json" "http://search-solr/solr/simple-search/query" -d @scherfig-filter-test.json

私は parent which 構文を使用しており、例えばこちらのドキュメントに記載があります: https://solr.apache.org/guide/8_2/other-parsers.html (私たちはSolr 8.10.1を使用しています)。デバッグ出力を見ると、次のような内容が見えます:

(work.creator:"scherfig parent which doc_type:work v pid.material_type")

これは少し心配です。"parent which" が work.creator フィールドの一部として見えるようですね?

興味深いことに、"pf":"work.creator" の行を削除すると、デバッグ出力のその部分が見えなくなります。ここで pf に問題があるのでしょうか?それともクエリのフォーマットが間違っていますか?

どうぞよろしくお願いします。
Noah

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

私もこれについて気付いています。pfの解析が、より複雑なクエリ構文に対して単純な方法で行われていることについても興味があります。他の方々の意見も聞いてみたいと思っています。もし誰も反応がない場合は、おそらくdev@solrリストへの質問が適切でしょう。

上記を除いても、現在の q パラメータで暗黙的に混合されたクエリ構文をお勧めしません。!parent クエリパーサーがスコアリングに影響しないと仮定すると、fq 内にそれを単独で配置する方が良いのではないかと思います。例えば fq={!parent [...]} です。また、SOLR-11501 [1] により、この種のネストしたクエリ構文の解析が7.2バージョン以降(luceneMatchVersionに依存)で変更される予定ですので、アプローチを切り替えるのが良いでしょう。

もし依然としてこれらを単一のクエリとしてまとめたい場合は、ブールクエリを明示的に組み合わせることをお勧めします。例えば次のように:

defType=lucene&q={!boolean should='{!edismax v=$qq}' filter=$myParentFilter}&qq=(scherfig)&myParentFilter={!parent which='doc_type:work' v='pid.material_type:("bog")'}

これらのより明示的な代替アプローチのいずれかを使用すると、pf パラメータが適切にブースティングフレーズクエリを構築するはずです(pf パラメータの目的に従って)。

[1] https://issues.apache.org/jira/browse/SOLR-11501

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

KandaSearch

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

投稿の削除

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