Példák a Microsoft SqlServer szövegkezelő moduljához

1. példa (ld. 262. old. alja)

Az alábbi példákkal az SqlServer keresési lehetőségét mutatjuk be. Kifejezéskeresésnél kettős idézőjelek közé kell tenni a keresőkifejezést:
  SELECT szoveg FROM doksik WHERE CONTAINS(szoveg, ’ "New York" ’)

A prefix kifejezésnél a szavak elejét rögzítjük, a végződésük tetszőleges lehet. A mintát szintén kettős idézőjelben kell megadni, és a minta végén szerepelnie kell a * dzsókerkarakternek. Így például a
  "tenge*"

minta illeszkedik a tenger és tengerpart szavakra is.

A származtatási kifejezésnél egy megadott alapszó származtatott alakjait is elfogadja az illesztő motor. A kifejezés alakja:
  FORMSOF (mód, elemi kifejezés)

Kétféle származtási mód támogatott:

Ez a keresési változat csak a támogatott nyelvek esetében használható.

A tezauruszállományok Xml-formátumban adják meg a szavakat és szinonimáikat. A tezaurusz felépítését az alábbi Xml-séma írja le:
  <thesaurus xmlns="x-schema:tsSchema.xml">
<expansion>
<sub> kifejezés1 </sub>
<sub> kifejezés2 </sub>
...
</expansion>
<replacement>
<pat> kifejezés3 </pat>
<sub> kifejezés4 </sub>
<sub> kifejezés5 </sub>
...
</replacement>
</thesaurus>

A leírásban kétféle szekció szerepel: a kiterjesztést és a helyettesítést megadó rész. A kiterjesztési szekció az <expansion> elemmel határolt. Az itt szereplő elemek egymás szinonimáinak tekinthetők. A szinonim szavak, kifejezések a <sub> elemmel határoltak. Ha az illesztési feltételben ezen elemek egyike előfordul, akkor a keresőmotor minden olyan kifejezést illeszkedőnek tekint, ahol a szinonim kifejezések egyike előfordul. A helyettesítő szekciót a <replacement> elem határolja. Itt egy mintakifejezés, és egy vagy több helyettesítő kifejezés adható meg. A mintakifejezést a <pat> elem határolja. Ekkor a keresési feltételben szereplő mintakifejezést helyettesíti a <sub> elemekben megadott helyettesítő kifejezésekkel, és a keresés ezekre fog lefutni.

Példaként vegyük az alábbi tezauruszállományt:
  <thesaurus xmlns="x-schema:tsSchema.xml">
<expansion>
<sub> kutya </sub>
<sub> eb </sub>
</expansion>
<replacement>
<pat> csahos </pat>
<sub> kutya </sub>
<sub> véreb </sub>
</replacement>
</thesaurus>

Az első rész azt jelöli, hogy a kutya és az eb kifejezések ekvivalensek egymással. Ha a keresésben a
  CONTAINS (leiras, ’ eb ’)

alakot használjuk, akkor pontos egyezés esetén csak az eb szó lesz illeszkedő. Ha azonban a közelítő keresésre szolgáló
  CONTAINS(leiras,’ FORMSOF(THESAURUS, eb) ’)

operátort használjuk, akkor az eb mellett a kutya is megfelelő lesz, mivel a tezaurusz alapján ez szinonimája az eb szónak. Ha a kérdést
  CONTAINS(leiras,’ FORMSOF(THESAURUS, csahos) ’)

alakban fogalmazzuk meg, akkor a csahos szó nem kerül be az eredménybe, csak az eb, kutya és véreb alakok jöhetnek számításba.

A közelség alapú kifejezéseknél a megadott kifejezéseket úgy kell tartalmaznia a szövegnek, hogy az egyes kifejezések a pozíció alapján közel helyezkedjenek el egymáshoz. Ekkor a keresőkifejezést a
  kifejezés_1 NEAR kifejezés_2

alakban adjuk meg. A következő lekérdezésben azon dokumentumokat keressük, melyekben a football és Hungary szavak egymáshoz közel fordulnak elő:
  SELECT * FROM doksik WHERE CONTAINS (szoveg, ’football NEAR Hungary’)

A súlyozott kifejezéseknél megadhatjuk, hogy egyszerre több keresőkifejezés esetén milyen fontosságot rendelünk az egyes kifejezésekhez. A kulcsszavak mellett azok súlyértékét is definiálhatjuk az illesztési operátornál. Az illesztéshez ebben az esetben az ISABOUT operátort kell használni:
  ISABOUT (kif1  WEIGHT(érték1  ), kif2  WEIGHT(érték2  ), . . . )

ahol a súlyérték 0 és 1 közötti valós szám lehet. Az eredő súlyérték az eredményhalmaz sorrendjét befolyásolja, tartalmára nincs hatással. A rangsor akkor jelenik meg, amikor az eredménylistát a CONTAINSTABLE függvénnyel kérjük le.

Elemi kifejezésekből összetett kifejezést képezhetünk az

operátorokkal. Így például a
  CONTAINS (mezo, ’ idared OR FORMSOF(INFLECTIONAL,alma) ’)

esetében az illesztés feltétele az, hogy vagy az idared szó legyen a szövegben, vagy egy olyan kifejezés szerepeljen, melynek szótöve az alma szó.

2. példa (ld. 263. old. közepe)

Ha például az irat táblában a leiras mező a szöveges adatokat, és a kod mező az egyedi azonosítót tárolja, akkor az indexet az alábbi módon hozhatjuk létre:
  CREATE UNIQUE INDEX irati1 ON irat (kod);

A Fulltext-index tényleges létrehozása az alábbi paranccsal lehetséges:
  CREATE FULLTEXT INDEX ON irat (leiras)
key INDEX irati1 ON indexkatalógus;

A létrehozott index alapján lekérdezhetjük az első 10 iratot, melynél a leiras mezőben szerepel az adatbázis szóval szinonim kifejezés.
  SELECT irat.leiras, seged.rank
FROM irat INNER JOIN
CONTAINSTABLE (irat, leiras,
’ FORMSOF(THESAURUS,adatbázis)’, 10) AS seged
ON irat.kod = seged.key
ORDER BY seged.rank DESC;

A CONTAINSTABLE függvényt a FROM részben adtuk meg és az eredményhez a seged alias értéket rendeltük hozzá. A seged tábla key mezőjén keresztül azonosíthatjuk a kapcsolódó alaptáblarekordot. A rank mező a rekord rangsorbeli pozícióját mutatja. Az eredménytábla rank mezőjében szereplő súlyértéknél a nagyobb számérték nagyobb relevanciaértéket jelöl.

3. példa (ld. 263. old. alja)

  SELECT irat.leiras, seged.rank
FROM irat INNER JOIN
FREETEXTTABLE (irat, leiras,’adatbázis’, 10) AS seged
ON irat.kod = seged.key
ORDER BY seged.rank DESC;

Ez a lekérdezés azokat a rekordokat adja vissza, ahol az adatbázis szónak valamely rokon alakja fordul elő a leiras mezőben. A sorrendképzés és limitálás formátuma és jelentése megegyezik a CONTAINSTABLE megfelelő elemével.