親ノードと子ノードを検索し、親ノードだけ返す | KandaSearch Community Support Forum

親ノードと子ノードを検索し、親ノードだけ返す

トピック作成者:ks-solruserml-bot (2025/10/24 18:40 投稿)
2
OpenOpen

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

皆さんこんにちは、

Google で調べても見つかったのは 9 年前の Mike の回答だけで、どう理解すればいいか苦労しています。

私のドキュメントは次のようにネストされています:

doc1
id: doc1
_text_: cheese

doc2
id: doc2
_text_: foo
child:
  id: doc2!child1
  _nest_path_: /doc1#0
  _nest_parent: doc1
  _text_: cheese

そして、q=_text_:cheese で検索したときに、doc1 と doc2 を返してほしいのですが、doc2!child1 は返したくありません。

自分の理解では、{!parent} クエリを「not-child クエリ」と OR で組み合わせる必要があると思うのですが、+- の正確な構文で迷子になっています。

どなたかすぐに思い出せる方はいませんか?

よろしくお願いします、
Dima

返信投稿者:ks-solruserml-bot (2025/10/24 18:41 投稿)
q=_text_:cheese OR {!parent which="!_nest_path:*" v="+_nest_path:* +_text_:cheese"}
fq=!_nest_path:*

つまり、:cheese にマッチするドキュメント、または cheese にマッチするドキュメントの親を検索し、子ドキュメントはフィルタで除外する、というクエリです。

(この nest path については完全に自信があるわけではありません。特にブロックマスクの部分です。個人的には、親と子のドキュメントを区別しやすくするために追加のフィールドを設定しています。)

〜 Sander

返信投稿者:ks-solruserml-bot (2025/10/24 18:41 投稿)

ああ、フィルタでしたか。ありがとうございます。

はい、_nest_path_ でうまくいきました。

改めて感謝します。
Dima

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

KandaSearch

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

投稿の削除

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