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 [...]

Zoroslav Kollár

Najvyšší súd odmietol dovolanie ministra Suska v korupčnej kauze Zoroslava Kollára

27.03.2026 19:17

Odsúdený Kollár proti rozhodnutiu podal ústavnú sťažnosť.

sneh, počasie, vernár

Pozor na horské priechody: Cestu na Maguru zablokoval sneh a ľad, policajti regulujú dopravu

27.03.2026 18:46

Na miesto sa presúvajú cestári, policajná hliadka reguluje dopravu. I

Marco Rubio, G7

Je to lož, Rubio poprel tvrdenie Zelenského o ponuke bezpečnostných záruk za územné ústupky

27.03.2026 18:15

Práve otázka Donbasu bola jedným z hlavných sporných bodov pri doterajších rokovaniach o ukončení Moskvou začatej vojny.

dostál ondrej

SaS: Do voľby kandidátov na Ústavný súd sa neprihlásil nikto. Je to vizitkou koalície

27.03.2026 18:12

Dostál si myslí, že obsadenie voľných miest na Ústavnom súde bude len vecou politických dohôd v rámci vládnej koalície.

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ť: 9689x
Priemerná čítanosť článkov: 1077x

Autor blogu

Kategórie