Markup statt Texte oder Attribute abfragen

05. Feb 2013

Anstatt einzelne Texte oder Attribute bei Listen- bzw. Repository-Abfragen zu prüfen, kann auch auf XML-Markup geprüft werden. Dadurch lassen sich teilweise deutlich effektivere Abfragen umsetzen.

Anstatt einzelne Texte oder Attribute bei Listen- bzw. Repository-Abfragen zu prüfen, kann auch auf XML-Markup geprüft werden. Dadurch lassen sich teilweise deutlich effektivere Abfragen umsetzen.

Da jeder wPath-Ausdruck bei einer Abfrage im Index hinterlegt wird, steigert sich die Effektivität des Repository-Index mit der Anzahl der gleichen wPath-Abfragen. Werden die wPath-Ausdrücke z.B. über ein Datum oder eine Uhrzeit oder eine große Auswahl an Kategorien dynamisch zusammengesetzt, sinkt die Wahrscheinlichkeit, dass genau dieser Ausdruck ein weiteres Mal aus dem Index herangezogen werden kann.

Dynamischer wPath-Ausdruck

$filtersCategories[] = array("wPath" => "/wd:extension/wd:meta/wd:categories[wd:category/text() = '<xsl:value-of select="text()"/>']", "operator" => "", "condition" => "");

Statischer wPath-Ausdruck

$filtersCategories[] = array("wPath" => "markup:/wd:extension/wd:meta/wd:categories", "operator" => "contains", "condition" => "<xsl:value-of select="text()"/>");           

Im ersten Beispiel wird die Abfrage für jede Kategorie dynamisch indiziert, während beim zweiten Beispiel der gesamte Inhalt des wPath-Ausdrucks indiziert wird. 

Beide Variante liefern die gleichen Ergebnisse und sind somit gleichwertig einsetzbar. Sobald in diesem Fall allerdings sehr viele Kategorien abgefragt werden, wird die statische Variante über Markup effektiver sein, da dann der gleiche Index-Wert zum Vergleich herangezogen werden kann.