MySQL teljes szöveges keresés

Ma játszottam, hogy optimalizálja a lassú SQL Alkalmazása a nemzetség

SELECT * FROM 'table' WHERE `field` LIKE '%word%'

Hol van az a probléma most itt – Az utolsó rész '% szót%’ és még több egyedi karaktert % szó előtt, amelyből nem. joker szimbólum % ,mielőtt bármilyen értéket, közvetlenül tesz minket lekérdezés közvetlenül a lassú, mert így az alkalmazás leáll számunkra, hogy használja indexek Field. Döntések mindig, de nem mindig egyértelmű 😆 Átlag MySQL Van egy megoldás erre a problémára Kulcsszavas keresés indexelés terén. Hogyan változik a területen van egy csomó írásos dokumentáció, de sietve leírja, hogyan kell változtatni a felső kérelem, mert mi lesz egy kis dráma végül. Sledka alkalmazandó teljes szöveges mezőben, kérelmet kell változások a típus:

SELECT * FROM `table` WHERE MATCH (field) AGAINST ('word')

Tehát a szerkezet nyilvánvaló, és nem igényel felesleges vitát. A fenti lekérdezés lép hatályba, ha a szó, Önnek olyan kérelmet legalább 4 szimbólumok, Az alapértelmezett érték, Ha módosítani szeretné meg kell határozni az értékét, akar én. részében cnf [mysqld] nyilatkozat ft_min_word_len= 3 vagy 2, 1 nem jó választás nyilvánvalóan 😉 . Miután megváltoztattuk az értéket, és indítsa újra mysql szerver kell tennie javításra a táblák, Ahhoz, hogy az új indexelési lép hatályba. Eddig minden világos: változtatások, vissza, rebildvam indexek, és nem a kérést, és visszatér 0 Ellenőrzése a megbízás 😀

SHOW VARIABLES

Látom, hogy az értékek, Megkértem a hatályos, rebildvam újra indexek – ugyanazt az eredményt. kellemetlen 🙄, nagyon kellemetlen. Innen kezdődött a nagy átokkal és vakarja a legfontosabb, hogy a fészer 😀 aki meglehetősen, elég érdekes. nagyjából, Elkezdtem olvasni dokumentációt nem tudja, melyik úton, és jött egy érdekes passzus

Ilyen technika működik a legjobban a nagy gyűjtemények (valójában, azt gondosan hangolt így). A nagyon kis asztalok, szó eloszlása ​​nem tükrözi megfelelően a szemantikai értéke, és ez a modell is olykor bizarr eredményeket. Például, bár a "MySQL" jelen van minden sorában cikkek asztal korábban bemutatott, a keresés a szó nem termel eredményeket

SUGÁR 😳 ad az én-m tálca kis – Mégis ez volt a teszt. A alkalmazás egy nagy asztal felett 2 000 000 rend és ott aludt a dolgokat. Hát most egyértelműen a problémát. Ahhoz, hogy egyértelmű döntés, Megemlítek röviden, hogy támogatja a teljes szöveges keresés 3 speciális mód LOGIKAI , KIFEJEZÉSEK és természetes nyelv az utolsó munkája alapértelmezés. Módhoz ellenőrizheti dokumentáció, Én megmondom 2-3 BOOLEAN szavak, mert ez a kulcs. Támogatja logikai operátorok ilyen ÉS, VAGY , NEM, és így tovább, és lehet, hogy bizonyos mágikus népszerű kifejezések, egy, nincs más stb. Fenntartása és szimbólumok *, amely egyenértékű a helyettesítő szimbólum % Ez akkor hasznos, 😉, ha a keresési kifejezés kisebb, mint a hossza ft_min_word_len vagy tálca ;). Legalábbis nekem egy asztal körülbelül 100 érdekében nem tökéletes munkát. Így csak látni és a kitöltött kérelmet:

SELECT * FROM `table` WHERE MATCH (field)
AGAINST ('*word*' IN BOOLEAN MODE)

Itt jön a pillanat, hogy mi indexelő működik helyettesítő karakterek – A válasz nem tudom. Azt hiszem, elvileg, hogy, mert nincs megadva, a dokumentációban, de a dokumentációban nyilvánvalóan nem azt mondják, vagy egy csomó dolgot 😀 megjelenítése

Növeli Zemanta

2 Hozzászólások

Válaszolj

E-mail címed nem kerül nyilvánosságra. Kötelező kitölteni *

anti spam *