1

XML 構造は次のようになります。

   <division>
     <sub-divison>
       <name>
         mime-type
       </name>
       <value>
         .jpeg
       </value>
     </sub-divison>
     <sub-divison>
        <name>
          status
        </name>
        <value>
          Work In Progress
        </value>
     </sub-divison>
    </division>

mime-typestatusのインデックスを作成する必要があります。どのような種類のインデックス作成メカニズムを使用する必要がありPath-Range-indexますか? どういうわけか私はそれが正しくないと感じています。提案してください。

4

1 に答える 1

2

何もする必要はありません。MarkLogic は、要素値、要素属性値、および単語のインデックスを自動的に作成します。したがって、構成を変更しなくても、XPath 式を記述して、 および の cts:query 用語を作成できnameますvalue。これらは、組み込みの要素値インデックスを使用します。それを試して、アプリケーションにとって十分に高速かどうかを確認してください。そうでない場合、問題はインデックス作成ではなくクエリにある可能性があります。http://docs.marklogic.com/xdmp:planまたはhttp://docs.marklogic.com/xdmp:query-traceを使用して、使用されているインデックスを確認できます。

ただし、改善の余地があります。XML では、要素も検査さvalueれるまで、その要素は何の意味も持ちません。name同様に、列nameと列がありvalue、選択したい場合に SQL が行うことを考えてみましょうWHERE name=? AND value=?。SQL エバリュエーターはname、 で検索し、 で検索しvalue、結果を結合する必要があります。MarkLogic も同様の処理を行い、2 つの検索用語を結合します。大規模な場合、結合にはコストがかかります。

したがって、最適なパフォーマンスが必要な場合は、XML を次のようにリファクタリングします。

<division>
 <sub-divison>
   <mime-type>.jpeg</mime-type>
   <status>.jpeg</status>
 </sub-divison>
</division>

このような XML を使用すると、単一の要素に対するクエリで結合が不要になります。との両方statusを使用するクエリmime-typeは、これら 2 つのルックアップの結果を結合しますが、古い XML は 3 つのルックアップから結合する必要があります。副次的な利点として、その XML は人間にとって読みやすく理解しやすいものでもあります。

于 2013-07-08T16:30:09.377 に答える