Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Azure SQL-kezelési példány
Létrehozhat egy teljes szöveges indexet az XML-oszlopokon, amely indexeli az XML-értékek tartalmát, de figyelmen kívül hagyja az XML-korrektúrát. A címkéket jel határokként használják. A rendszer a következő elemeket indexeli:
Az XML-elemek tartalma.
Csak a legfelső szintű elem XML-attribútumainak tartalma, kivéve, ha ezek az értékek numerikus értékek.
Ha lehetséges, a teljes szöveges keresés és az XML-index a következő módon kombinálható:
Először szűrje a fontos XML-értékeket az SQL teljes szöveges keresésével.
Ezután kérdezheti le azokat az XML-értékeket, amelyek XML-indexet használnak az XML-oszlopban.
Példa: Teljes szöveges keresés kombinálása XML-lekérdezéssel
Miután a teljes szöveges index létrejött az XML-oszlopban, az alábbi lekérdezés ellenőrzi, hogy egy XML-érték tartalmazza-e az "egyéni" szót egy könyv címében:
SELECT *
FROM T
WHERE CONTAINS(xCol,'custom')
AND xCol.exist('/book/title/text()[contains(.,"custom")]') = 1;
A contains() metódus a teljes szöveges indexet használja a "testreszabott" szót tartalmazó XML-értékek részhalmazára bárhol a dokumentumban. A exist() záradék biztosítja, hogy a "custom" szó szerepel a könyv címében.
A contains() és az XQuery contains() használó teljes szöveges keresések különböző szemantikával rendelkeznek. Az utóbbi egy részszöveg-egyezés, az előbbi pedig egy szóegyezés, amely szótőredukálást használ. Ezért ha olyan sztringre keresünk, amelynek a címében a "run" szerepel, az egyezések közé tartozik a "run", a "runs" és a "running", mivel a teljes szöveges contains() és az XQuery contains() is teljesül. A lekérdezés azonban nem egyezik a cím "testreszabható" szavával, mivel a teljes szöveges keresés contains() sikertelen, de az XQuery contains() teljesül. A teljes szöveges contains() záradékot általában el kell távolítani a tiszta részkarakterlánc egyezések esetében.
Emellett a teljes szöveges keresés szóalapokra bontást használ, de az XQuery contains() esetében szó szerinti egyezés történik. Ezt a különbséget a következő példában szemlélteti.
Példa: Teljes szöveges keresés XML-értékeken a stemming használatával
Az előző példában végrehajtott XQuery contains() ellenőrzés általában nem távolítható el. Fontolja meg ezt a lekérdezést:
SELECT *
FROM T
WHERE CONTAINS(xCol,'run');
A dokumentumban a "futtatott" szó egyezik a keresési feltétellel, mert az eredetből ered. Emellett a keresési környezet nincs ellenőrizve az XQuery használatával.
Ha az XML teljes szöveges indexelt AXSD használatával relációs oszlopokra oszlik, az XML-nézetben előforduló XPath-lekérdezések nem végeznek teljes szöveges keresést az alapul szolgáló táblákon.