Fulltextové vyhľadávanie v PHP a MySQL

Fulltextové vyhľadávanie v MySQL umožňuje efektívne prehľadávanie veľkých textových dát.

Základný script ktorý potrebujeme a ktorý si môžete prispôsobiť podľa svojich potrieb, napríklad pridať ďalšie polia na vyhľadávanie alebo upraviť vzhľad výsledkov je tento:

<?php
// Konfigurácia databázy
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "fulltext_search_demo";

// Vytvorenie pripojenia
$conn = new mysqli($servername, $username, $password, $dbname);

// Kontrola pripojenia
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Vytvorenie databázy a tabuľky s fulltextovým indexom
$sql = "CREATE DATABASE IF NOT EXISTS fulltext_search_demo;
        USE fulltext_search_demo;
        CREATE TABLE IF NOT EXISTS articles (
            id INT AUTO_INCREMENT PRIMARY KEY,
            title VARCHAR(255) NOT NULL,
            content TEXT NOT NULL,
            FULLTEXT (title, content)
        );";

if ($conn->multi_query($sql) === TRUE) {
    echo "Database and table created successfully\n";
} else {
    echo "Error creating database or table: " . $conn->error;
}

// Čakanie na dokončenie všetkých dotazov
while ($conn->next_result()) {;} // Flush multi_queries

// Vloženie ukážkových dát
$sql = "INSERT INTO articles (title, content) VALUES
        ('First Article', 'This is the content of the first article. It contains some text to search.'),
        ('Second Article', 'Content of the second article. It also has text to be searched.'),
        ('Third Article', 'Here is the content of the third article. This one has different text.');";

if ($conn->query($sql) === TRUE) {
    echo "Sample data inserted successfully\n";
} else {
    echo "Error inserting data: " . $conn->error;
}

// Vyhľadávací dotaz
$search = isset($_GET['search']) ? $_GET['search'] : '';

if ($search) {
    $sql = "SELECT id, title, content FROM articles WHERE MATCH (title, content) AGAINST (?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param('s', $search);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result->num_rows > 0) {
        // Výpis výsledkov vyhľadávania
        echo "<h2>Search Results for '$search':</h2>";
        while($row = $result->fetch_assoc()) {
            echo "<h3>" . $row["title"] . "</h3><p>" . $row["content"] . "</p>";
        }
    } else {
        echo "No results found for '$search'";
    }
    $stmt->close();
}

$conn->close();
?>

<!DOCTYPE html>
<html>
<head>
    <title>Fulltext Search</title>
</head>
<body>
    <form method="get" action="">
        <input type="text" name="search" placeholder="Search...">
        <button type="submit">Search</button>
    </form>
</body>
</html>

Vysvetlenie kódu

  1. Konfigurácia databázy a pripojenie:
    • Nastavenie parametrov pripojenia k databáze.
    • Vytvorenie pripojenia pomocou mysqli.
  2. Vytvorenie databázy a tabuľky:
    • Vytvorenie databázy fulltext_search_demo a tabuľky articles s fulltextovým indexom na stĺpcoch title a content.
  3. Vloženie ukážkových dát:
    • Vloženie niekoľkých ukážkových záznamov do tabuľky articles.
  4. Vyhľadávací dotaz:
    • Vyhľadávací dotaz je vykonaný, ak je v adrese URL parameter search.
    • Použitie MATCH a AGAINST na vykonanie fulltextového vyhľadávania.
  5. Výpis výsledkov:
    • Výsledky vyhľadávania sú zobrazené, ak nejaké záznamy zodpovedajú vyhľadávaciemu dotazu.
  6. HTML formulár:
    • Jednoduchý HTML formulár pre zadanie vyhľadávacieho dotazu.

Tvorba grafov pomocou knižnice Chart. js a PHP

01.08.2025

V tomto článku si ukážeme, ako vytvoriť dynamické grafy pomocou knižnice Chart.js a PHP. Chart.js je jednoduchá knižnica na tvorbu grafov v JavaScripte, ktorá umožňuje vizualizáciu údajov v rôznych formátoch, ako sú stĺpcové grafy, čiarové grafy, koláčové grafy a ďalšie. Síce samozrejmosť ale pre istotu: údaje sú uložené v MySQL databáze 🙂 Vytvoríme HTML [...]

Implementácia živých kasínových hier pomocou WebSocketov v PHP a Laraveli

30.08.2024

Implementácia živých kasínových hier predstavuje moderný a atraktívny spôsob, ako zaujať hráčov a poskytnúť im autentický zážitok z hry. Použitie WebSocketov umožňuje real-time komunikáciu medzi serverom a klientom, čím sa dosahuje plynulé a rýchle reagovanie na herné udalosti. V tomto článku si ukážeme, ako vytvoriť živé kasínové hry pomocou PHP a Laravelu, [...]

Kompletný skript pre odosielanie e-mailov pomocou PHPMailer vrátane konfigurácie SMTP

19.08.2024

Vysvetlenie kódu: Autoloader: Použitím Composeru načítame potrebné triedy z PHPMaileru. SMTP konfigurácia: Nastavíme pripojenie k SMTP serveru vrátane hostiteľa, portu, používateľského mena a hesla. Nastavenie príjemcov: Pridáme odosielateľa, príjemcu a voliteľnú adresu pre odpovede. Nastavenie obsahu e-mailu: Definujeme predmet, telo e-mailu vo formáte HTML a alternatívny [...]

Trump

Trump dvíha „Štít Amerík“ a posiela armádu do boja proti drogovým kartelom. V Ekvádore padli prvé smrteľné výstrely

07.03.2026 21:12

Po skončení konfliktu s Iránom sa Washington zameria na Kubu, uviedol americký prezident.

milan majerský

Padol Mečiar a padne aj Fico, vyhlásil Majerský. Šéf KDH predstavil mená kandidátov do krajských volieb

07.03.2026 20:50

Majerský sa opäť pokúsi obhájiť post šéfa Prešovského samosprávneho kraja.

Zelenskyj s Orbanom kombifoto

Eurá, doláre, zlato. Kyjev hovorí o Orbánových banditoch, Budapešť vraví o ukrajinskej vojenskej mafii

07.03.2026 19:40

Viktor Orbán obvinil Ukrajincov, že peniaze, ktoré prevážali cez Maďarsko, boli určené pre jeho politických súperov v parlamentných voľbách.

Holečková

Holečková žiada preveriť postup prokurátorov v prípade čurillovcov. Žilinka: Snahy politikov zapájať sa do živých vecí sú škodlivé

07.03.2026 19:19

Poslankyňa SaS žiada preveriť prácu dozorových prokurátorov pri zásahu. Odvoláva sa na rozhodnutie súdu, ktorý nevidel dôvody na obvinenie policajtov.

janvarga

Blog o mojej práci a vášni zároveň. Programujem v PHP a ako najčastejšie cms používam wordpress ako nedokonalú ale modernejšiu náhradu za drupal a typo3. A tom sú moje články.

Štatistiky blogu

Počet článkov: 9
Celková čítanosť: 9527x
Priemerná čítanosť článkov: 1059x

Autor blogu

Kategórie