Tokenayzery - sqlite kiterjesztése fts3 és fts4

5. Tokenayzery

Tokenayzer FTS - egy szabályrendszer kitermelése szempontjából egy olyan dokumentum, vagy egy egyszerű teljes szövegű lekérdezés FTS.

Ha létrehoz egy táblázatot az FTS lekérdezés virtuális TABLE nem határozott meg konkrét tokenayzer majd umolchalnyh tokenayzer fogják használni, amely az „egyszerű”. Ez az egyszerű tokenayzer kiosztja jelzőket egy dokumentumot vagy egy egyszerű teljes szövegű lekérdezés FTS a következő szabályok szerint:

Therm - folyamatos sorozataként érvényes karakterek, amelyek érvényesek az összes szimbólumot a betűk és számok, „_” karakter, valamint az összes szimbólumot kódoló UTF, a kód nagyobb vagy egyenlő, mint 128. Az összes többi karakter dobni, amikor bontani a szempontból a dokumentumot. Ők tartják csak egy elválasztó szomszédos feltételeket.

A tokenizálás folyamat, minden nagybetűs karaktert az ASCII karakterkészlet (UTF kódok kevesebb, mint 128) úgy alakítjuk át a ekvivalens kisbetűkkel. Ennek eredményeként, ha tokenayzera egyszerű teljes szöveges lekérdezések kis- és nagybetűket.

Tegyük fel például, a dokumentum tartalmazza a szöveg „Most, ők nagyon csalódott.” Ezt követően ebben a dokumentumban a következő kifejezéseket kell illeszteni a full-text index lesz kivont: „most, hogy újra nagyon csalódott.” Ha a keresést a dokumentum bevezetését, mint például a kérelem „MATCH" Csalódott”, tokenayzer„egyszerű”átalakítja a lekérdezési kifejezés kisbetűs mielőtt keres teljes szöveges index.

Együtt tokenayzerom „egyszerű”, a forráskód is tartalmaz FTS tokenayzer alapú algoritmus steminga Porter. Ez tokenayzer ugyanazt a szabályokat elosztjuk a dokumentumot feltételek és vezeti őket a kisbetűs, de azon kívül, hogy ő még mindig használja steminga Porter algoritmust, hogy a szavakat az angol nyelv a bázis. Például, a feldolgozás ugyanazt a dokumentumot, mint az előző bekezdésben, tokenayzer Porter már szerepel a következő jelzők: „most thei veri frustrat”. Bár ezek a kifejezések nem a szavak az angol nyelv, egyes esetekben azok használatát a full-text index teszi a találatokat intelligensebbek, mint abban az esetben, tokenayzera „egyszerű”. Ha tokenayzera „portás” a példaértékű dokumentum megtalálható nemcsak azt kérdezi: „MATCH»frusztrált«”, hanem mint a „MATCH" Frusztráció”, mivel mind a„csalódottság”, és a„frusztrált”Az algoritmus steminga Portertől „frustrat” egyenrangú. Így ha tokenayzera „portás”, FTS lehet találni nem csak a pontos egyezés a kért szempontjából, hanem átfedik más hasonló angol nyelvű kifejezések. Részletesebb algoritmus steminga Porter megtalálható a kapcsolatot.

Egy példa szemlélteti a különbséget tokenayzerami „egyszerű” és a „portás”:

Ha a bővítmény összeállított elpárologtató opció SQLITE_ENABLE_ICU. van egy beépített tokenayzer nevű „ICU”, amelyet a segítségével ICU könyvtár. Az első érv a módszer xCreate () (lásd fts3_tokenizer.h), amely lehet tokenayzera területi azonosító ICU. Például a „tr_TR” a török ​​nyelv Törökországban használhatják, vagy a „en_AU” az angol nyelvet használják Ausztráliában. például:

Megvalósítás tokenayzera ICU nagyon egyszerű. Ez osztja a beírt szöveget szerint az intenzív osztályra vonatkozó szabályokat megállapító szóhatárdetektáló és eltávolítja a jelzőt, hogy állhatnak kizárólag terek. Ez hasznos lehet bizonyos alkalmazások néhány lokalizált, de nem mindenki számára. Ha szüksége van több komplex feldolgozása, például, hogy végre steminga vagy megválni írásjeleket, szükséges lehet tokenayzera amely használni fogja az ICU tokenayzer részeként azok végrehajtását.

5.1. Egyéni tokenayzery (megvalósított felhasználó által)

Együtt beépített tokenayzerami „egyszerű”. „Porter” és (esetleg) „ICU” FTS felületet biztosít, amely lehetővé teszi, hogy saját tokenayzery felhasználók által C. Ez az interfész használható új tokenayzerov, meghatározott és leírt forráskód fájl fts3_tokenizer.h.

Regisztráljon új tokenayzera FTS hasonló a regisztrációs egy új modul a virtuális asztalokat SQLite. A felhasználó átmegy a mutató egy szerkezet, amely mutatókat a különböző callback függvények alkotják a végrehajtását egy új típusú tokenayzera. Mert tokenayzerov ez a szerkezet az úgynevezett „sqlite3_tokenizer_module”. Ez határozza meg fts3_tokenizer.h fájlt.

FTS nem kérkedik funkció C, ami a felhasználó számára, hogy regisztráljon egy új tokenayzera. Ehelyett egy mutatót kell titkosítani BLOB érték és átengedjük SQL FTS. Mert ez a „fts3_tokenizer ()” különleges skalár. Ezt a funkciót kell hívni egy vagy két érv, az alábbiak szerint:

ahol - egy karakterlánc, ami azonosítja tokenayzer és - pointer a szerkezethez sqlite3_tokenizer_module BLOB SQL-formátumban. Ha a második argumentum van megadva, akkor jegyezhető tokenayzer és annak egy példányát vissza kell adni. Ha csak egy érv, akkor a mutatót a végrehajtás tokenayzera Ez el fogja fogadni a jelenlegi, ami visszakerül a videokódolt a BLOB. Vagy, ha az ilyen tokenayzera nem létezik, nem lesz hiba SQL (kivétel).

A következő blokk tartalmaz egy példát fts3_tokenizer () függvény hívást a C kód: