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.

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

Správa používateľov a rolí pomocou Laravelu

09.08.2024

Správa používateľov a ich rolí je jednou zo základných funkcií, ktoré potrebuje takmer každá webová aplikácia. V tomto článku sa pozrieme na to, ako implementovať robustný systém správy používateľov a rolí pomocou frameworku Laravel. Zameriame sa na vytváranie používateľov, prideľovanie rolí a implementáciu autorizácie na základe týchto rolí. Nastavenie [...]

Ramzan Kadyrov

Kadyrov obviňuje politikov z okolitých regiónov z plánovania jeho vraždy

10.10.2024 15:38

Hrozí im "krvnou pomstou", ak toto tvrdenie nedokážu vyvrátiť.

SR Košice osada sčítanie ľudia bez domova KEX

V Košiciach sčítajú ľudí bez domova, ide o súčasť európskeho projektu

10.10.2024 15:12

Do projektu je zapojených 14 miest z desiatich krajín Európskej únie.

OSN / UNIFIL /

Mierová misia OSN v Libanone sa ocitla pod izraelskou paľbou, hlásia ranených. Židovský štát mlčí

10.10.2024 14:42, aktualizované: 15:18

Izraelská armáda od minulého týždňa začala pozemnú operáciu v libanonskej pohraničnej oblasti, kde práve pôsobí aj misia OSN.

Vlak, rýchlik, koľaje, železnice

70 metrov od tragédie. Pri Lučenci sa takmer zrazili dva rýchliky

10.10.2024 14:21

Na železničnej stanici v Podrečanoch na jednej koľaji oproti sebe zastavili dva rýchliky.

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: 8
Celková čítanosť: 5602x
Priemerná čítanosť článkov: 700x

Autor blogu

Kategórie

Archív