MySQL Fulltext Search

Programovacie jazyky, rady, poradňa...
atlox
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 230
Registrovaný: 15 aug 2006, 0:31
Bydlisko: Poprad
Kontaktovať používateľa:

MySQL Fulltext Search

Príspevok od používateľa atlox »

Zdravím chalani :)

Pekne prosím o Vašu radu, hlavne od tých viac zdatnejších v SQL. Chcel som si navrhnúť fulltextové vyhľadávanie na stránke. Údaje sa ťahajú iba z jednej tabuľky (pochopiteľne kvoli fulltext indexu). Tabuľka 'topic' má atribúty 'nazov' VARCHAR, 'popis' TEXT, 'tagy' TEXT, 'dolezitost' INT. Potrebujem urobiť SQL skript, ktorý bude fulltextovo hľadať v týchto atribútoch, no s určitou "prioritou" teda potrebujem to zotriediť tak, aby najskôr vyhľadalo určitý reťazec v názve, to aby zoradilo podľa dôležitosti, potom aby hľadalo v tagoch a nakoniec v popise. Neviem či ste ma pochopili. Proste ak fulltext nájde určitú zhodu v názve a väčšiu zhodu v popise, tak ako prvý vo výsledkoch hľadania bude ten názov. Teoreticky viacerými selectmi by som to vedel urobiť, len ja by som to chcel ako sa povie all-in-one... :? Zatiaľ som sa dopracoval k niečomu takému:

Kód: Vybrať všetko

SELECT DISTINCT *, 
MATCH(`nazov`) AGAINST('*retezec*') AS `naz`, 
MATCH(`tagy`) AGAINST('*retazec*') AS `tag`, 
MATCH(`popis`) AGAINST('*retazec*') AS `pop` 
FROM `topic` 
WHERE MATCH(`nazov`,`tagy`,`popis`) AGAINST('*retazec*' IN BOOLEAN MODE) 
ORDER BY `naz` DESC, `dolezitost` ASC, `tag` DESC, `pop` DESC
Samozrejme "retazec" je PHP premenná. Atribúty 'nazov', 'popis', 'tagy' sú fulltextovými indexmi. No nefunguje mi to. Ak mám v prvom riadku názov "PHP-rulz" a v druhom riadku v tagoch "PHP" a vyhľadávam "php", tak mi ako prvý vypíše ten druhý riadok :smt017
Napísať odpoveď