ELEKTRO
CHEMIE
PROGRAMOVÁNÍ
FOTKY
BLOG
E-SHOP

Elektro

  • Novinky
  • Aktuality
  • PHP
  • MySQL
  • JavaScript
  • .NET
  • Download
  • Odkazy
  • Anketa
  • Návštěvní kniha
  • Mapa webu
  • O webu
  • RSS

  • © by Hugo moravec.zd@gmail.com

    Fulltextové vyhledávání

    Úvod

    Fulltextové vyhledávání je velmi užitečné pro větší weby. Umožňuje poměrně jednoduchým způsobem realizovat vyhledávání na webu bez použití externích služeb. MySQL má fulltextové vyhledávání poměrně dobře propracované, takže ho lze většinou použít bez úprav.

    Fulltext lze použít pouze pokud splníme následující podmínky:

    Sloupcům, které chceme prohledávat musíme nastavit fulltextový index. To lze udělat buď při vytváření tabulky nebo dodatečně. Např.:

    CREATE TABLE `fulltext` (
    `ID` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT ,
    `Nazev` VARCHAR( 150 ) NOT NULL ,
    `Clanek` TEXT NOT NULL ,
    PRIMARY KEY ( `ID` ) ,
    FULLTEXT (`Clanek`)
    ) TYPE = MYISAM CHARACTER SET utf8 COLLATE utf8_czech_ci

    Případně můžeme tento klíč vytvořit později pomocí příkazu ALTER TABLE:

    ALTER TABLE `fulltext` ADD FULLTEXT (`Clanek`)

    Klíč lze samozřejmě vytvořit na více sloupcích. Potom budou prohledávány všechny najednou.

    Nyní máme tedy hotovou tabulku a vytvořený fulltextový klíč. Aby mělo vyhledávání smysl, je nutné mít v tabulce dostatečný počet záznamů. Já mám na svém počítači uloženy v databázi zajímavé články a vyhledávání je realizovány PHP skripty, které budou uvedeny níže. SQL příkaz pro fulltextové vyhledávání může vypadat následovně.

    select * from `fulltext`
    where match (`clanek`) against ('hledaný text')

    Výsledky jsou seřazeny podle relevance.

    Při vyhledávání je třeba mít v paměti několik skutečností:

    PHP skript

    Předpokládejme, že máme na webu tento formulář (celý soubor).

    <form name="search" action="search.php" method="post">
    <label for="word">Hledané slovo:</label>
    <input type="text" name="word" id="word" size="30">
    <input type="submit" name="submit" value="Vyhledat">
    </form>

    Potom vyhledávácí skript search.php může vypadat třeba takto (celý soubor):

    <?php
    $connect = MySQL_Connect('localhost','test','test');
    MySQL_Select_DB('test', $connect);

    $text = AddSlashes($_POST['word']); // V PRAXI JE VHODNE UDELAT LEPSI KONTROLU

    /* SQL DOTAZ
    VRATI NAM NAZEV CLANKU A JEHO ID */
    $sql = "SELECT `ID`, `Nazev`
            FROM `fulltext`
            WHERE MATCH(`clanek`) AGAINST ('".$Text."')";
    $res = MySQL_Query($sql, $connect);
    ?>

    Literatura