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

kellogg

Kyjev stráca veľkú podporu: kľúčový vyslanec Trumpa pre Ukrajinu končí

19.11.2025 22:19

Kyjev príde o jedného z kľúčových podporovateľov v Trumpovej administratíve, Kellogg je zástanca tvrdej línie voči Rusku.

trump, zelenskyj

USA predložili Kyjevu tvrdý mierový plán: žiadajú odovzdanie celého Donbasu, redukciu armády aj zbraní

19.11.2025 18:39, aktualizované: 23:12

Washington navrhuje Kyjevu plán, podľa ktorého má odovzdať zvyšok Donbasu a uznať stratu Krymu výmenou za bezpečnostné záruky.

firma, ľudia, korporát, porada

Absolútne najlepší výsledok a pozícia v TOP 10. Slováci vedia výborne po anglicky. Ktoré mesto porazilo Bratislavu?

19.11.2025 18:35

Kým u mladých ľudí znalosť angličtiny klesá, prieskum odhalil, ako sa zmenili rozdiely medzi ženami a mužmi a ktoré profesie sú na tom najlepšie.

kosovský premiér Albin Kurti.

Kurti sa ani na dvakrát nestal premiérom, Kosovo (opäť) smeruje k predčasným voľbám

19.11.2025 18:28

Kurti, ktorý vládne krajine od roku 2021, teraz pôsobí ako dočasný premiér už takmer desať mesiacov.

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

Autor blogu

Kategórie