Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können einen Volltextindex für XML-Spalten erstellen, die den Inhalt der XML-Werte indiziert, aber das XML-Markup ignoriert. Elementtags werden als Tokengrenzen verwendet. Die folgenden Elemente sind indexiert:
Der Inhalt von XML-Elementen.
Der Inhalt von XML-Attributen des Elements der obersten Ebene, es sei denn, diese Werte sind numerische Werte.
Wenn möglich, können Sie die Volltextsuche mit dem XML-Index auf folgende Weise kombinieren:
Filtern Sie zunächst die XML-Werte von Interesse mithilfe der SQL-Volltextsuche.
Fragen Sie als Nächstes die XML-Werte ab, die einen XML-Index in der XML-Spalte verwenden.
Beispiel: Kombinieren der Volltextsuche mit XML-Abfrage
Nachdem der Volltextindex in der XML-Spalte erstellt wurde, überprüft die folgende Abfrage, ob ein XML-Wert das Wort "custom" im Titel eines Buchs enthält:
SELECT *
FROM T
WHERE CONTAINS(xCol,'custom')
AND xCol.exist('/book/title/text()[contains(.,"custom")]') =1
Die contains() -Methode verwendet den Volltextindex, um die XML-Werte zu unterzuordnen, die das Wort "custom" an einer beliebigen Stelle im Dokument enthalten. Die exist()- Klausel stellt sicher, dass das Wort "custom" im Titel eines Buchs auftritt.
Eine Volltextsuche, die contains() und XQuery contains() verwendet , weist unterschiedliche Semantik auf. Letzteres ist eine Teilzeichenfolgenübereinstimmung, und der erste ist eine Tokenübereinstimmung, die Stemming verwendet. Wenn die Suche daher nach einer Zeichenfolge ist, die "run" im Titel enthält, umfasst die Treffer "run", "runs" und "running", da sowohl die Volltext contains()-Abfrage als auch die Xquery contains()-Abfrage erfüllt sind. Die Abfrage stimmt jedoch nicht mit dem Wort "anpassbar" im Titel überein, weil der Volltext enthält() fehlschlägt, aber die Xquery contains() erfüllt wird. Im Allgemeinen sollte die Volltext-Contains() -Klausel für eine reine Teilzeichenfolgenüberstimmung entfernt werden.
Darüber hinaus verwendet die Volltextsuche Wortstammerkennung, aber XQuery contains() ist eine Literal-Übereinstimmung. Dieser Unterschied wird im nächsten Beispiel veranschaulicht.
Beispiel: Volltextsuche für XML-Werte mithilfe von Stemming
Die XQuery contains()- Überprüfung, die im vorherigen Beispiel ausgeführt wurde, kann im Allgemeinen nicht entfernt werden. Angenommen, die folgende Abfrage wird ausgeführt:
SELECT *
FROM T
WHERE CONTAINS(xCol,'run')
Das Wort "ran" im Dokument stimmt aufgrund der Wortstammerkennung mit der Suchbedingung überein. Darüber hinaus wird der Suchkontext nicht mithilfe von XQuery überprüft.
Wenn XML in relationale Spalten mithilfe von AXSD kompiliert wird, die Volltext indiziert sind, führen XPath-Abfragen, die über die XML-Ansicht auftreten, keine Volltextsuche für die zugrunde liegenden Tabellen durch.