子ドキュメントについて誰か知っていますか?

トピック作成者:ks-solruserml-bot (2024/07/22 21:27 投稿)
5
CloseClose

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

こんにちは皆さん、

8.11で子ドキュメントを動作させたことがある人はいますか?
別のバッチで_child$PARENT_IDに設定し、_nest_path$SOMETHINGに設定して追加しようとしていますが、公式マニュアルの例(https://solr.apache.org/guide/8_11/searching-nested-documents.html)から何も有用なものが得られません。

最良の場合でも、何も役に立つことはしてくれません。最悪の場合、_root_をインデックス化して保存するようにしてみたところ、親ドキュメントに実際にroot: $PARENT_IDが追加されてしまいました。(copyfieldsはありません。)これは理解できますか?

何かヒントはありませんか?

インポーターのスクリプトを、別々にではなくネストされたドキュメントとして挿入するように書き直してみますが、それが宣伝どおりに動作したとしても、pymssqlのクエリオーバーヘッドのために実用的なオプションではありません。親ドキュメントあたり「たった」2つのサブクエリで、「たった」全体の3倍の遅延を予想しています。

Dima

返信投稿者:ks-solruserml-bot (2024/07/22 21:28 投稿)

こんにちは、Dima。

スキーマがアトミックアップデート用に正しく構成されていれば、子ドキュメントもアトミックに追加できます。個別の子ドキュメントを追加、置換、削除したい場合は、JSONリクエスト形式を使用する必要があります。これらのアップデートはXMLを通じてサポートされていません(SOLR-12677)。

Thomas

返信投稿者:ks-solruserml-bot (2024/07/22 21:28 投稿)

私の理解では、アトミックアップデートにはすべてのフィールドが格納されるか、または docValues = true である必要があり、それは _root_ および _nest_path_ のデフォルト定義ではそうなっていません。

さらに、デフォルトのスキーマでは _text_ フィールドは格納されることも docValues = true でもなく、copyField の指示が「すべてを二重にインデックス化するのは非常に高価だから」という理由でコメントアウトされています。(これはおそらくバグです:フィールド定義もコメントアウトされた部分内にあるべきです。)

つまり、デフォルトで作成されるスキーマはアトミックアップデートには適していないということですか?(それでも「フラット」なドキュメントでのアップデートコマンドは問題なく動作しているようです。)

ありがとう、
Dima

返信投稿者:ks-solruserml-bot (2024/07/22 21:28 投稿)

追伸:考え直してみると、docValues = true_nest_path_ のデフォルト設定のようなので、アトミックアップデートの要件に適合していないのは _root_(および text ですが、これはおそらくデフォルトスキーマの記述ミスです)だけです。

Dima

返信投稿者:ks-solruserml-bot (2024/07/22 21:28 投稿)

こんにちは、
この核心問題についてはよく理解できませんが、SQLクエリに関する最後の文について詳しく説明したいと思います。以前、構造化モデルのETL作業に取り組んだ経験があります。SQL用語でいうところの「外部マージ結合」が、このようなインデクサーに対して非常に効果的であることがわかりました。我々はこれをDIHで「ジッパー結合」として実装しました。
以下のリンクを参照してください:

  • Data Import Handler
  • SOLR-4799
    DIHへの移行を推奨するわけではありませんが、N+1問題を避けるために外部SQL結合を検討することを提案します。

成功をお祈りします。

返信投稿者:ks-solruserml-bot (2024/07/22 21:28 投稿)

これは話題が逸れてしまいますが、ポイントはDIHからの移行です。過去数週間、db-data-config.xmlを(Pythonの)スクリプトに書き換える作業を行っており、いくつかの点で問題が発生しました。以下はその例です:

  • cacheKey/cacheLookupが使用できない。
  • child=trueがうまく機能せず、現在その解決に取り組んでいる。
  • onError=continue:スクリプトではパフォーマンスのためにドキュメントのバッチをPOSTしますが、404エラーが発生するとバッチ全体が失敗します。実際のエラーを修正したい場合が多いので、これは「バグではなく機能」と考えるべきかもしれません。

DIHを廃止した理由は理解できますが、その代替機能はまだ完全ではないように思います。開発者は再考すべきかもしれません。

Dima

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

KandaSearch

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

投稿の削除

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