Fulltext. vyhledávání na více sloupcích

Nemá někdo nápad, jak udělat fulltext. vyhledávání na více sloupcích (VARCHAR, LONGTEXT) i s např. sčítáním či násobením "score" výsledků?
Nevím jestli to půjde přímo v MySQL. Jestli ne, udělal bych to výce dotazy a následnou analýzou a zppracováním v PHP. Dík
Míro kde je to tlačítko?!... ;).
Cože?
taky nechapu co zase Luk. placa
Ale nic, narážel jsem na jinej thread kde radek říkal aby míra udělal tlačítko s tím že se do zprávy vrazí něco typu: Byl jsem tu, ale nechápu...
BOZE!!! ODPUST MI!!! ... to jsem zas neco placnul :) ... ze mi obe ruce neupadnou!

Radek

PS: jako pokani se zitra kouknu na ten fulltext, at je tu alespon jeden prispevek trosku k veci ... stejne se mi to bude hodit :o)
A co bys dělal, pokud by ti upadly?! Dyť bys nemohl psát;)).
Jinak fulltext zkus hledat na www.hotscipts.com
> A co bys dělal, pokud by ti upadly?! Dyť bys nemohl psát;)).

... no prave ...

Radek
No a pak si by si nemohl radit, ani už psát zdrojáky a co potom?
> No a pak si by si nemohl radit, ani už psát zdrojáky a co potom?

... mel bych svatej klid :o)

Ale zkusme trosku k veci :o) ... po dnesnim badani nad fulltextem v MySQL, jsem prisel zhruba na toto ... vse podstatne je receno v referencnim nanuallu MySQL ... vrele doporucuju prelouskat :)

http://www.mysql.com/doc/en/Fulltext_Search.html

Fulltext hledani nad dvema sloupci muzes udelat primo tak, ze udelas fulltext index nad dvema sloupci ...

CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT INDEX (title, body)
);

... pak uz jenom polozis dotaz ...

SELECT * FROM articles WHERE MATCH (title, body) AGAINST ('slova ktere hledas')

... je tam pomerne slusna podpora toho, jak menit vahu (vyznamnost) jednotlivych hledanych slov, ale nikde jsem nenasel, jak menit vahu jednotlivych sloupcu (jako aby titulek mel vetsi vahu nez text ... pocitam, ze to uz by se muselo rikat pri vytvareni indexu) ... pokud bys na tomto trval, je moznost (MATCH (title, body) AGAINST ('slova ktere hledas')) pouzit jako funkci, ktera ti vraci miru prislusnosti k danemu radku. Muzes ji pouzit skoro kdekoli v SQL dotazu ... tzn. i ve vyrazu, tak uz zalezi jen na tobe, jak budes vynalezavej ...

... WHERE ... AND (
(MATCH (title) AGAINST ('slova ktere hledas'))*0.8 +
(MATCH (body) AGAINST ('slova ktere hledas'))*0.2
) > 0.1;

Tot vse, co se mi podarilo zjistit ... ale asi pisu notoriky zname veci, ze :)

Radek
Drobny patch ... to rizeni vahy klicovych slov je az od MySQL 4.0 :)

Radek
Děkuji všem (hlavně Radkovi). Manuál sem prolít asi 2*, ale spíš z rychlíku, než z náklaďáku. Kouknu se, co z toho vyrobím.
Jeste jedna drobna poznamka ... pokud ve WHERE klauzuli pouzijes MATCH(jak jsem ti daval priklad na zaver) ... tak to NENI moc stastnej napad :) ... protoze pak se fulltext-index nepouzije a dotaz bude stejne pomalej (mozna pomalejsi) nez kdybys pouzil klasikcky LIKE.

Nikde jsem to explicitne nenasel, ale co jsem z experimentu vypozoroval, tak ...

MATCH (...) AGAINST (...) AND MATCH (...) AGAINST (...)

... podle indexu jede, ale uz ...

MATCH (...) AGAINST (...) OR MATCH (...) AGAINST (...)

... mysql nedokaze proves podle indexu, natoz pak nejaky +, *, ...

V pripade toho OR by se to dalo obejit pres UNION dvou selektu, ale to mysql tusim taky nepodporuje :) ... takze polozit 2 dotazy a v PHP si je zmergeovat :)

Radek