Hledani podle vice klicovych slov

Petr Vileta petr na practisoft.cz
Sobota Červen 21 18:41:58 CEST 2003


> Chci co nejefektivneji realizovat nasledujici:
> 1. najit zaznamy podle zadanych klicovych slov ve vztahu 'or'
> 2. najit zaznamy podle zadanych klicovych slov ve vztahu 'and'
> 3. zjistit vsechna pouzita klicova slova (kvuli checkboxum)
[...]
> Jak by tuto situaci resili zdejsi databazovi guruove? Diky za odpovedi.
Nejsem databazovy guru a moje reseni mozna spousta lidi zavrhne, ale ja to
resim takto:
Tabulka bude obsahovat pole "klicova_slova" a tato slova tam budou ulozena
tak, ze budou oddelena nejakym oddelovacem, ale ten musi byt i na samem
zacatku i konci, asi takhle:
",prvni,druhy,treti vyraz,dalsi,jeste nejaky,"
Misto carky je mozne pouzit cokoliv, co se bezne nevyskytne v klicovych
slovech.
Pak v aplikaci (v Perlu) nejprve sestavim do promenne jakousi podminku ze
slov, ktera hodlam vyhledat a podle toho, zda hledam zpusobem AND nebo OR.
No a pak uz dam jednoduchy select, kam tu podminku proste vlozim.
Dejme tomu, ze hledam "prvni OR druhy" a oddelovac je carka, pak bude
program vypadat asi takto:

$podminka="klicova_slova like \'%,prvni,%\' or klicova_slova like
\'%,druhy,%\'";
$sth=$dbh->prepare("SELECT * FROM tabulka WHERE $podminka");
$sth->execute();
while($row=$sth->fetchrow_arrayref)
    {
    print $row->[0], $row->[1] .... ;
    }
$sth->finish;

Je to omezene pouze maximalni moznou delkou select prikazu a ta je myslim
dostatecne velka. V manualu jsem sice o tom nic nenasel, ale ani muj
nejdelsi dotaz, ktery mel 16kB nebyl prilis dlouhy ;-)
--
Petr




Další informace o konferenci Test