Autor | Zpráva | ||
---|---|---|---|
T-fon Profil |
#1 · Zasláno: 26. 7. 2012, 13:37:44
když mám jednoduchý dotaz:
SELECT nazev, text FROM test WHERE MATCH(nazev) AGAINST('slovo') mám na mysli něco jako COLLATE utf8_general_ci když se použije LIKE
|
||
Tori Profil |
Pokud je u sloupce nazev nastavené porovnávání utf8_unicode_ci nebo utf8_general_ci, tak by to mělo fungovat přesně jak chcete. Na jak velkém vzorku dat to zkoušíte? U hledání
IN NATURAL LANGUAGE MODE (= implicitní varianta) platí práh 50%: pokud se hledané slovo vyskytuje ve více než polovině řádků, bere se jako stopword (jak je to vlastně česky?). Zkuste tohle - pokud vám to něco najde, tak je problém v malém vzorku zkušebních dat a/nebo se hledané slovo vyskytuje příliš často.SELECT nazev, text FROM test WHERE MATCH(nazev) AGAINST('slovo' IN BOOLEAN MODE)
Ještě přidám odkaz na přehled porovnávání v MySQL: http://www.collation-charts.org/mysql60/ |
||
T-fon Profil |
#3 · Zasláno: 26. 7. 2012, 14:37:32
Tori:
díky, já právě používám czech_ci kváli řazení. Teď jsem ještě pátral a našel jsem právě to co píšete, že bych mel nastavit u sloupců general_ci, to jsem vyzkoušel a funguje to. Tzn. předpokládám správně, že s czech_ci nemám šanci? |
||
Tori Profil |
#4 · Zasláno: 26. 7. 2012, 15:21:58
T-fon:
Koukněte se na ty tabulky jednotlivých porovnávání, z toho je jasně vidět, které znaky se berou jako jeden (jestli C == Č nebo ne). Zkuste, o kolik by bylo pomalejší, kdyby ten sloupec měl porovnávání unicode/general a řadil by se ORDER BY nazev COLLATE utf8_czech_ci . Sama to používám, ale jen na malé tabulce (cca 2000 řádků) a už si nepamatuju jestli a jak velký tam byl rozdíl. (ale kdyby byl velký tak bych to řešila asi jinak)
|
||
T-fon Profil |
#5 · Zasláno: 26. 7. 2012, 15:26:24
Tori:
OK, to se zdá jako dobrý řešení, tabulka nebude mít víc než 2000 řádků. Ještě jednou díky. |
||
Časová prodleva: 12 let
|
0