文書を読むhttp://exist-db.org/exist/apps/doc/indexing.xml 「読取り」問合せのパフォーマンスを向上させる方法がわかりました(2つのパラメータ:文字列と整数)。 eXist-dbにデフォルトの構造索引がありますか? 'range index'を使って2つのparamsクエリを改善することはできますか?私のXML DBについてeXist-dbの範囲索引を使用した問合せのパフォーマンスを向上させる
詳細(単に同じルートにマージ2つの異なるDBSがあります注意してください):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<db>
<docs>
<doc>
<header>
<year>2001</year>
<number>1</number>
<type>O</type>
</header>
<metas>
<meta>
<number>26001</number>
<details>
<detail>
<description>legge</description>
<number>19</number>
<date>14/01/1994</date>
</detail>
<detail>
<description>decreto legge</description>
<number>453</number>
<date>15/11/1993</date>
</detail>
</details>
</meta>
</metas>
</doc>
<doc>
<header>
<year>2001</year>
<number>2</number>
<type>O</type>
</header>
<metas>
<meta>
<number>26002</number>
<details>
<detail>
<description>decreto legislativo</description>
<number>29</number>
<date>03/02/1993</date>
</detail>
</details>
</meta>
<meta>
<number>26016</number>
<details>
<detail>
<description>decreto legislativo</description>
<number>29</number>
<date>03/02/1993</date>
</detail>
</details>
</meta>
</metas>
</doc>
</docs>
<full_text_docs>
<doc>
<header>
<year>2001</year>
<number>1</number>
<type>O</type>
<president>ferrari</president>
</header>
<text>lorem ipsum ...
</text>
</doc>
<doc>
<header>
<year>2001</year>
<number>2</number>
<type>O</type>
<president>ferrari</president>
</header>
<text>lorem ipsum......
</text>
</doc>
</full_text_docs>
</db>
これは
xquery version "3.0";
let $doc := doc("/db//index_test/test_general.xml")//db/docs/doc
let $fulltxt := doc("/db//index_test/test_general.xml")//db/full_text_docs/doc
return <root> {
for $a in $doc[metas/meta/details/detail[date="03/02/1993" and number = "29"]]/header
return $fulltxt[header/year/text()=$a/year/text() and
header/number/text()=$a/number/text() and
header/type/text()=$a/type/text()
]
} </root>
基本的に私は単にdetail/number
を見つける私のXQueryです最初のdbの入力と一致し、2番目のdbを照会するための結果を取得するdetail/date
があります。結果は一致するすべての<full_text_header>
文書です。
パフォーマンスを向上させるためにフィールドnumber
とdate
のインデックスを作成できるかどうかを知りたいと思います。これは私が最適化するために必要な唯一のクエリです(このデータベースでは唯一のことです)明らかに数値と日付の変更:)。
解決策: 明確な説明については、joewizの回答をお読みください。私の問題は.xconfファイルの正しい認識でした。 /db/yourcollectiondirに配置する必要があります。ファイルを作成するときにeXideを使用している場合は、テンプレート "eXist-db collection configuration"でXmlタイプを選択する必要があります。ファイルを保存しようとすると、「適用設定?」と表示されます。 [OK]をクリックします。ちょうどこのxquery xmldb:reindex('/db/yourcollectiondir')
を実行してください。 インデックスを含むxqueryを実行するときにすべてが適切であれば、 "モニタリングとプロファイリング"の使い方が分かります。
'for'句に構文エラーがあります:2つの述語を開始し、そのうちの1つのみを終了することに注意してください。 – joewiz
「collection.xconf」のようなXML文書の「New XQuery」ボタンではなく、eXideで「New」ボタンを使用することについての発見を追加してくれてありがとう。これにより、eXideは.xconfファイルをXML文書(XQueryではなく)として認識し、 '/ db/system'の適切な場所にコピーして、このインデックスをコレクションに適用できるようにします(eXideは自動的にあなたのために再インデックスを実行します;あなたはそれをやり直す必要はありません)。私は間違ったことに対してユーザーに警告するために機能リクエストをeXideに提出しました:https://github.com/wolfgangmm/eXide/issues/126。 – joewiz