Szinonimaszótár-fájlok konfigurálása és kezelése Full-Text kereséshez

A következőkre vonatkozik:SQL Server

Az SQL Server Full-Text Keresési lekérdezések a felhasználó által megadott kifejezések szinonimáit kereshetik egy Full-Text Keresési szinonimaszótár használatával. Minden szinonimaszótár szinonimákat határoz meg egy adott nyelvhez. A teljes szöveges adatokra szabott szinonimaszótár fejlesztésével hatékonyan bővítheti az adatokra vonatkozó teljes szöveges lekérdezések hatókörét.

A szinonimaszótár-egyeztetés az összes FREETEXT és FREETEXTTABLE lekérdezésnél, valamint az olyan CONTAINS és CONTAINSTABLE lekérdezéseknél történik, amelyek megadják a FORMSOF THESAURUS záradékot.

A Full-Text keresési szinonimaszótár egy XML-szövegfájl.

Mi található a szinonimaszótárban?

Mielőtt a teljes szöveges keresési lekérdezések szinonimákat kereshetnek egy adott nyelven, meg kell határoznia az adott nyelv szinonimaszótár-leképezéseit (vagyis szinonimáit). Minden szinonimaszótárat manuálisan kell konfigurálni a következő beállítások megadásához:

  • Bővítőkészlet

    A bővítőkészletek olyan szinonimák egy csoportját tartalmazzák, mint az "író", a "szerző" és az "újságíró", amelyeket egy teljes szöveges lekérdezés helyettesít egymással. Azok a lekérdezések, amelyek bármely szinonima egyezését tartalmazzák egy bővítőkészletben, ki lesznek bővítve úgy, hogy a bővítőkészlet minden más szinonimája is belekerül.

    További információt a cikk későbbi részében, a bővítőkészlet XML-struktúrájában talál.

  • Cserekészlet

    A cserekészletek olyan szövegmintát tartalmaznak, amelyet helyettesítő készlettel kell helyettesíteni. Példaként tekintse meg a jelen cikk későbbi részében a cserekészlet XML-struktúrája című szakaszt.

  • Diakritika beállítása

    Egy adott szinonimaszótár esetében az összes keresési minta érzékeny vagy érzéketlen az olyan ékezetes jelekre, mint például a tilde (~), az akut ékezetjel ('), vagy az umlaut (̈) (vagyis ékezetérzékeny vagy ékezetérzéketlen). Tegyük fel például, hogy egy teljes szöveges lekérdezésben a "kávé" mintát más mintákkal kell helyettesíteni. Ha a szinonimaszótár ékezetérzéketlen, a teljes szöveges keresés a "café" és "cafe" mintákat helyettesíti. Ha a szinonimaszótár érzékeny az ékezetekre, a teljes szöveges keresés csak a "café" mintát helyettesíti. Alapértelmezés szerint a szinonimaszótár ékezetérzékenység nélküli.

Alapértelmezett szinonimaszótár-fájlok

Az SQL Server XML-szinonimaszótár-fájlokat biztosít, egyet minden támogatott nyelvhez. Ezek a fájlok lényegében üresek. Ezek csak a legfelső szintű XML-struktúrát tartalmazzák, amely az összes SQL Server-szinonimaszótárra jellemző, és egy megjegyzéssel tagolt minta szinonimaszótárat tartalmaznak.

A szinonimaszótárfájlok helye

A szinonimaszótárfájlok alapértelmezett helye a következő:

<SQL_Server_data_files_path>\MSSQL13.MSSQLSERVER\MSSQL\FTDATA\

Ez az alapértelmezett hely a következő fájlokat tartalmazza:

  • nyelvspecifikus szinonimaszótár-fájlok

    A telepítő üres szinonimaszótárfájlokat telepít az előző helyen. Minden támogatott nyelvhez külön fájl tartozik. A rendszergazdák testre szabhatják ezeket a fájlokat.

    A szinonimaszótár-fájlok alapértelmezett fájlnevei a következő formátumot használják:

    'ts' + <three-letter language-abbreviation> + '.xml'

    Az adott nyelv szinonimaszótárfájljának neve a beállításjegyzékben a következő értékben van megadva:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance-name>\MSSearch\<language-abbrev>

  • A globális szinonimaszótárfájl

    Üres globális szinonimaszótárfájl, tsGlobal.xml.

Szinonimaszótár-fájl helyének módosítása

A szinonimaszótár-fájlok helyét és nevét a beállításkulcs módosításával módosíthatja. A szinonimaszótárfájl helyét minden nyelv esetében a beállításjegyzékben a következő érték határozza meg:

HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance name>\MSSearch\Language\<language-abbreviation>\TsaurusFile

A globális szinonimaszótárfájl az LCID 0 semleges nyelvének felel meg. Ezt az értéket csak rendszergazdák módosíthatják.

A teljes szöveges lekérdezések használata a szinonimaszótárban

A szinonimaszótár-lekérdezések nyelvspecifikus szinonimaszótárat és globális szinonimaszótárat is használnak.

  1. Először a lekérdezés megkeresi a nyelvspecifikus fájlt, és betölti feldolgozásra (kivéve, ha már betöltötte). A lekérdezést kibővítik, hogy tartalmazza a bővítőkészlet és a cserekészlet szabályai által megadott nyelvspecifikus szinonimákat a szinonima szótár fájljában.

  2. Ezek a lépések ezután ismétlődnek a globális szinonimaszótár esetében. Ha azonban egy kifejezés már része egy egyezésnek a nyelvspecifikus szinonimaszótár-fájlban, a kifejezés nem jogosult a globális szinonimaszótárban való egyeztetésre.

Szinonimaszótár-fájl felépítése

Minden szinonimaszótár-fájl meghatároz egy XML-tárolót, amelynek azonosítója Microsoft Keresés Thesaurusegy ... megjegyzés, <!---->amely egy minta szinonimaszótárat tartalmaz. A szinonimaszótár egy <thesaurus> elemben van definiálva, amely a diakritikai beállítást, a bővítőkészleteket és a cserekészleteket meghatározó gyermekelemek mintáit tartalmazza.

Egy tipikus üres szinonimaszótárfájl a következő XML-szöveget tartalmazza:

<XML ID="Microsoft Search Thesaurus">

<!--  Commented out

    <thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
        <expansion>
            <sub>Internet Explorer</sub>
            <sub>IE</sub>
            <sub>IE5</sub>
        </expansion>
        <replacement>
            <pat>NT5</pat>
            <pat>W2K</pat>
            <sub>Windows 2012</sub>
        </replacement>
        <expansion>
            <sub>run</sub>
            <sub>jog</sub>
        </expansion>
    </thesaurus>
-->
</XML>

Bővítőkészlet XML-struktúrája

Minden bővítőkészlet egy <expansion> elemen belül található. Ebben az elemben egy vagy több helyettesítést kell megadnia egy <sub> elemben. A bővítőkészletben megadhatja a helyettesítések egy csoportját, amelyek egymás szinonimái.

Szerkesztheti például a bővítési szakaszt, hogy szinonimákként kezelje az "író", a "szerző" és az "újságíró" helyettesítést. Az egy helyettesítésben egyezést tartalmazó teljes szöveges keresési lekérdezések ki vannak bontva, hogy az tartalmazza a bővítőkészletben megadott összes többi helyettesítést. Ezért az előző példában, amikor kiad egy SZINONIMASZÓTÁR-űrlapot vagy EGY SZABADSZÖVEG-lekérdezést a "szerző" szóhoz, a teljes szöveges keresés az "író" és az "újságíró" szót tartalmazó keresési eredményeket is visszaadja.

Így nézne ki a bővítési csoport szakasza az előző példában:

<expansion>
        <sub>writer</sub>
        <sub>author</sub>
        <sub>journalist</sub>
</expansion>

Cserekészlet XML-struktúrája

Minden cserekészlet egy <replacement> elemen belül található. Ezen az elemen belül megadhat egy vagy több mintát egy <pat> elemben, és nullát vagy több helyettesítést az elemekben <sub> , egyet szinonimánként. Megadhat egy helyettesítési csoporttal helyettesítendő mintát. A minták és a helyettesítések tartalmazhatnak szavakat vagy szavak sorozatát. Ha nincs megadva helyettesítés egy mintához, az eltávolítja a mintát a felhasználói lekérdezésből.

Tegyük fel például, hogy azt szeretné, hogy a "Win8" mintára vonatkozó lekérdezéseket a "Windows Server 2012" vagy a "Windows 8.0" helyettesítse. Ha teljes szöveges lekérdezést futtat a "Win8" kifejezéshez, a teljes szöveges keresés csak a "Windows Server 2012" vagy a "Windows 8.0" keresési eredményeket adja vissza. Nem ad vissza "Win8" értéket tartalmazó eredményeket. Ennek az az oka, hogy a "Win8" mintát a "Windows Server 2012" és a "Windows 8.0" mintázatok váltják fel.

Így nézne ki a cserekészlet szakasz az előző példában:

<replacement>
        <pat>Win8</pat>
        <sub>Windows Server 2012</sub>
        <sub>Windows 8.0</sub>
</replacement>

Ha két hasonló mintával rendelkező cserekészlete van, a kettő hosszabb része elsőbbséget élvez. Ha például futtat egy FORMS OF THESAURUS lekérdezést az "Internet Explorer online közösség" kifejezéshez, és a következő cserekészlettel rendelkezik, az "Internet Explorer" cserekészlet elsőbbséget élvez az "Internet" cserekészlettel szemben. A lekérdezés ezért "IE online közösségként" vagy "IE 9 online közösségként" lesz feldolgozva.

<replacement>
         <pat>Internet</pat>
         <sub>intranet</sub>
</replacement>

és

<replacement>
         <pat>Internet Explorer</pat>
         <sub>IE</sub>
         <sub>IE 9</sub>
</replacement>

Az ékezetek beállításának XML-struktúrája

A szinonimaszótár diakritikai beállítása egyetlen <diacritics_sensitive> elemben van megadva. Ez az elem egy egész számot tartalmaz, amely az ékezetes érzékenységet szabályozza az alábbiak szerint:

Diakritika beállítása Érték XML
Ékezetes érzéketlen 0 <diacritics_sensitive>0</diacritics_sensitive>
Ékezetérzékeny 1 <diacritics_sensitive>1</diacritics_sensitive>

Jegyzet

Ez a beállítás csak egyszer alkalmazható a fájlban, és a fájl összes keresési mintájára érvényes. Ez a beállítás nem adható meg az egyes mintákhoz.

Szinonimaszótár szerkesztése

A szinonimaszótárat konfigurálhatja egy adott nyelvhez a szinonimaszótárfájl (XML-fájl) szerkesztésével. A telepítés során a rendszer kiüríti azokat a szinonimaszótár-fájlokat, amelyek csak a <xml> tárolót és egy megjegyzésként megadott minta <thesaurus> elemet tartalmaznak. Ahhoz, hogy a szinonimákat kereső teljes szöveges keresési lekérdezések megfelelően működjenek, létre kell hoznia egy tényleges <thesaurus> elemet, amely szinonimák készletét határozza meg. A szinonimák, a bővítőkészletek és a cserekészletek két formáját definiálhatja.

Szinonimaszótár-fájl szerkesztése

  1. Nyissa meg a szinonimaszótárfájlt a Jegyzettömbben vagy egy másik szövegszerkesztőben.

  2. Ha először szerkeszti a szinonimaszótárfájlt, távolítsa el a következő megjegyzéssorokat a fájl elején és végén:

    <!--Commented out
    -->
    
  3. Cserekészlet vagy bővítőkészlet hozzáadása, módosítása vagy törlése.

  4. Mentse a fájlt, és zárja be a Jegyzettömbet.

  5. A sp_fulltext_load_thesaurus_file használatával töltse be a szinonimaszótárfájl tempdbtartalmát a szinonimaszótárfájl nyelvének megfelelő helyi azonosító (LCID) megadásával. Az angol szinonimaszótár fájl esetében például az tsenu.xml-hoz tartozó LCID a 1033.

    USE AdventureWorks;
    
    EXECUTE sys.sp_fulltext_load_thesaurus_file 1033;
    GO
    

Javaslatok a szinonimaszótár-fájlok szerkesztéséhez

Javasoljuk, hogy a szinonimaszótárfájl bejegyzései ne tartalmazzanak speciális karaktereket. Ennek az az oka, hogy a szótörések finom viselkedést mutatnak a speciális karakterek tekintetében. Ha egy szinonimaszótár-bejegyzés speciális karaktereket tartalmaz, az ezzel a bejegyzéssel együtt használt szóhatárolók finom viselkedési hatással lehetnek a teljes szöveges lekérdezésekre.

Azt javasoljuk, hogy a <sub> bejegyzések ne tartalmazzanak stop szavakat, mivel a stop szavak kimaradnak a teljes szöveges indexből. A lekérdezések kibővítve tartalmazzák a szinonimaszótár-fájlból származó <sub> bejegyzéseket, és ha egy <sub> bejegyzés megállító szavakat tartalmaz, a lekérdezés mérete szükségtelenül nő.

A szinonimaszótár-fájlok szerkesztésének korlátozásai

A szinonimaszótár-fájlok szerkesztésére a következő korlátozások vonatkoznak:

  • A szinonimaszótár-fájlokat csak a rendszergazdák frissíthetik, módosíthatják vagy törölhetik.

  • Ha szövegszerkesztő eszközökkel szerkessze a szinonimaszótárfájlokat, a fájlokat Unicode formátumban kell menteni, és meg kell adni a bájtsorrendjeleket.

  • A szinonimaszótár-bejegyzések nem lehetnek üresek, és nem lehet szótörés üres sztringre.

  • A szinonimaszótár-fájlban lévő kifejezések legfeljebb 512 karakter hosszúságúak lehetnek.

  • A szinonimaszótárak nem tartalmazhatnak ismétlődő bejegyzéseket a bővítőkészletek <sub> bejegyzései és a helyettesítő készletek <pat> elemei között.