Ich habe eine Reihe von Dokumenten mit einer Struktur wie:Summe-Aggregatfunktion mit nicht-eindeutigen Werten
<DOCUMENT>
<AMOUNTS>
<ELEMENT>
<AMOUNT>10.00</AMOUNT>
<INFO>
<CODE1>132</CODE1>
<CODE2>022</CODE2>
</INFO>
</ELEMENT>
<ELEMENT>
<AMOUNT>10.00</AMOUNT>
<INFO>
<CODE1>132</CODE1>
<CODE2>121</CODE2>
</INFO>
</ELEMENT>
<ELEMENT>
<AMOUNT>15.00</AMOUNT>
<INFO>
<CODE1>156</CODE1>
<CODE2>121</CODE2>
</INFO>
</ELEMENT>
</AMOUNTS>
</DOCUMENT>
Ich bin auf der Suche verschiedene Summen des AMOUNT Elements zu tun, damit ich gesetzt habe Pfadbereichsindex auf dem DOCUMENT/AMOUNTS/ELEMENT/AMOUNT
Element, das die sum-aggregate
-Funktion verwenden möchte. Allerdings sehe ich ein Problem bei der Verwendung der cts:sum-aggregate
Funktion, wenn die Summe Dokumente umfasst, die mehr als ein Element mit dem gleichen Wert enthalten. Um das Problem zu veranschaulichen, gehe ich davon aus, dass das obige XML unter der '/DOCS/DOC1.XML
'-URL gespeichert ist. Ich führe dann die folgende xQuery aus, um die Summe aller AMOUNTs im Dokument zu erhalten. Ich mache die Summe auf zwei verschiedene Arten und zwei unterschiedliche Ergebnisse erhalten:
(
fn:sum(doc('/DOCS/DOC1.XML')/DOCUMENT/AMOUNTS/ELEMENT/AMOUNT),
cts:sum-aggregate(
cts:path-reference("DOCUMENT/AMOUNTS/ELEMENT/AMOUNT"),
("any"),
cts:document-query('/DOCS/DOC1.XML')
)
)
Die fn:sum
Funktion gibt 35 und die cts:sum-aggregate
gibt 25. Die Summe-Aggregat Funktion ist nur einer der Werte einschließlich in die Summe.
Ich denke, ich mache etwas falsch, aber ich kann nicht herausfinden, was, kann jemand Licht für mich für dieses Licht?
Dank
David
Interessant. "item-frequency" wird typischerweise verwendet, um die Sortierreihenfolge nach Anzahl der Elemente in den Index-gegen-Nummer-Fragmenten (Dokumenten) anzuzeigen. Haben Sie versucht, den Typ explizit als "dezimal" zu definieren? – wst
'fragment-frequency' bedeutet, dass es die Anzahl der Fragmente zählt, in denen ein bestimmter Wert aufgetreten ist, unabhängig davon, wie oft er in diesem Fragment aufgetreten ist. 'item-frequency' zählt die Vorkommen selbst, also war' item-frequency' genau das, was Sie gesucht haben. Und ja, "Fragment-Frequency" ist der Standard: http://docs.marklogic.com/cts:aggregate – grtjn