ugrás a tartalomhoz

MySQL fulltext kereséshez valahogy collate?

toldigabor · 2014. Jún. 19. (Cs), 11.57
A MySQL fulltext kereséshez lehet valahogy hozzárendelni a felhasználó űrlapbeállításai alapján utf8_hungarian_ci vagy utf8_bin COLLATE-t, mint a LIKE-os, reguláris kifejezéseknél lekérdezésenként vagy a fulltext az mindig a táblalétrehozásbani kódlapot veszi alapul? A kis és nagybetű valamint az ékezetes karakterek megkülönböztetése miatt kellene.
 
1

Kis segítség

Pepita · 2014. Jún. 19. (Cs), 19.58
2

Igen, ez tudom, hogy a sima

toldigabor · 2014. Jún. 20. (P), 10.43
Igen, ez tudom, hogy a sima LIKE-os kifejezésekhez lehet egy lekérdezésen belül is adni COLLATE-t, de a fulltext search-höz nem írja a dokumentáció sem (csak a tábla létrehozásnál). Ezek szerint nem lehet MySQL-hez üzemmódszerűen összetett keresésekhez, mint a Word-ben, egy-egy lekérdezéshez külön beállítani, hogy most akarom-e a kis- és nagybetűk valamint az ékezetes karakterek megkülönböztetését. A reguláris kifejezéseknél, nem fulltext keresésnél lehet:

for ($i=0; $i<count($keresendok); $i++)
	  {
	   $keresendok[$i]=specialis_karakter_mentesit($keresendok[$i]);
	   //$lekerdezes_reszlet .= "($mezonev_valt LIKE '%" . $keresendok[$i] . "%' collate utf8_hungarian_ci) AND ";	// Ez a karakterkódolás van a táblalétrehozásnál beállítva
			// Ennél NEM tesz különbséget a kis és a nagybetűk között, az ékezetes és ékezetlent egynek veszi
	   //$lekerdezes_reszlet .= "($mezonev_valt LIKE '%" . $keresendok[$i] . "%' collate utf8_bin) AND ";
			// Ennél különbséget tesz a kis és a nagybetűk között, az ékezetes és ékezetlent külön veszi
	   //$lekerdezes_reszlet .= "(lower($mezonev_valt) LIKE '%" . strtolower($keresendok[$i]) . "%' collate utf8_bin) AND ";
			// Ennél NEM tesz különbséget a kis és a nagybetűk között, az ékezetes és ékezetlent külön veszi
	   $elvalaszto = ($i<count($keresendok)-1) ? ", " : ((count($keresendok)>1) ? " szavakra" : " szóra");
	   $elvalaszto = ($i==count($keresendok)-2) ? " és " : $elvalaszto;
	   $cim .= $keresendok[$i] . $elvalaszto;
	  }