Solr 8.8.2のchildFilter複数条件

トピック作成者:ks-solruserml-bot (2024/05/28 20:03 投稿)
4
CloseClose

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

こんにちは、

Solr 8.8.2では、「fl」の「childFilter」パラメータに複数のフィルタを指定することができません。

例えば、

fq={!parent which='docType:parent_doc_type'} docType: child_doc_type AND color: Red AND size: Large

このfqは、'Red'と'Large'の子ドキュメントを持つすべての親ドキュメントをフィルタリングします。

今、私は結果に子供と一緒に親を表示したいですが、'Red'と'Large'のみの子供だけを表示したいです。以前(Solr v6)は次のようにしていました:

fl=*, [child childFilter='docType:child_doc_type AND color: Red AND size: Large']

しかし、Solr 8.8.2では子供が結果に表示されず、エラーも表示されません。

余分なAND条件を削除すると:

fl=*, [child childFilter='docType:child_doc_type']

すると、青と小さい子供ドキュメントも含まれます。

fqに一致する子供ドキュメントのみを含めるにはどうすればよいですか?ドキュメントに見つからない方法で複数の条件を指定する方法はありますか?

ご協力いただければ幸いです。

返信投稿者:ks-solruserml-bot (2024/05/28 20:03 投稿)

こんにちは、

8.0でhttps://issues.apache.org/jira/browse/SOLR-12768によって破損し、その後、9.0(リリースされていません)でSOLR-15156によって修正されました。

私は修正をバックポートしなかったのは、ユーザーがエスケープの動作を頼りにしているかもしれないと思ったからです。SOLR-12768の前にそのようなエスケープが存在しなかったことに気づきませんでした。このため、変更は8.9に適切な追加になりますが、バグ修正バージョンではありません。

回避策としては、内部ロジックがそれにゲートされているため、コロンを含まないクエリを表現することです。そのため、次のようなものが考えられます:
childFilter='+{!field f=docType v=child_doc_type} +{!field f=color v=Red}' など。免責事項:これをテストしていませんが、これを他のパラメータにパースルール/制限に基づいて移動する必要があるかもしれません。 たとえば、childFilter=$theChildFilterとして、トップレベルのパラメータを追加します。しかし、それは必要ないと思います。

~ David Smiley
Apache Lucene/Solr 検索開発者
http://www.linkedin.com/in/davidwsmiley

返信投稿者:ks-solruserml-bot (2024/05/28 20:04 投稿)

David、確認とワークアラウンドをありがとう、本当に感謝しています。

サブクエリも正しい結果を返すことができることがわかりました。ただし、childFilterとのパフォーマンス比較をテストしていないため、これまで試したことがありませんでした。以前はサブクエリを使用したことがなかったので、それについて考えることはありませんでした。両方試してみます。

fq={!parent which='docType:factory'} docType:widget AND color:Red AND size:Large
fl=*, widgets:[subquery]
widgets.q=docType: child_doc_type AND color:Red AND size:Large
widgets.fq={!terms f=_nest_parent_ v=$row.id}

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

返信投稿者:ks-solruserml-bot (2024/05/28 20:04 投稿)

サブクエリもここでは良いアイデアです。遅いですが、より強力で、より一般的です。

SOLR-15156を8.9に取り込むようにします。

〜 David Smiley
Apache Lucene/Solr検索開発者
http://www.linkedin.com/in/davidwsmiley

返信投稿者:ks-solruserml-bot (2024/05/28 20:04 投稿)

同じ問題を抱えており、サブクエリの結果変換子を使用して解決しました。例えば、以下のようにします。

fl=*, mychild:[subquery]

クエリのパラメータは以下の通りです:

mychild.q={!terms v=$row.instanceid f=instanceid}&mychild.fq=(contenttype:blah AND quantity:5)

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

KandaSearch

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

投稿の削除

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