Autor Zpráva
para
Profil
Zdravím, chtěl jsem se zeptat jak by se dala řešit situace nejlépe na úrovni MySql, kdy potřebuju vyhledat např. slovo 'žlutý' zadáním slova 'zluty'. Díky za odpovědi.
Kajman_
Profil *
Možná bych si udělal verzi s diakritikou i bez a na obojem fulltextový index, ale možná to jde lépe.
Martin
Profil
Také by mě zajímalo, jak se to řeší.
simka00
Profil
function odstran_diakritiku($text) {
return strtr($text,
"áčďéěíňóřšťúůýžÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ",
"acdeeinorstuuyzACDEEINORSTUUYZ"
);
}

$dotaz = "SELECT * FROM tabulka WHERE neco LIKE '%$slovo%' OR neco LIKE '%". odstran_diakritiku($slovo) ."%' ";
$vysledek = mysql_query($dotaz);

takhle nějak jsem to někdy vyřešil, už si to přesně nepamatuji
Kajman_
Profil *
Ale rychlost na vetsich datech asi nebyla bleskova, ze?
para
Profil
Díky za odpovědi. Nakonec jsem to vyřešil funkcí, která kombinuje osekání diakritiky a sestavení regexp pro SQL dotaz. Namísto Strtr jsem musel použít funkci Str_Replace, protože Strtr nepodporuje UTF-8, což můj web má. SQLko pro vyhledání slova "test" pak vypada nějak takto:


SELECT * FROM `tabulka` WHERE `text` RLIKE CONVERT(_utf8 '[tťŤ][eéěëÉĚË][sšŠ][tťŤ]' USING latin2) COLLATE latin2_general_ci ORDER BY id DESC.


Funguje to sqele až na to, že když hledám slovo test, najde to i těstoviny :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0