Založ si blog

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

Fluffy

Thajčanku v dome napadol masívny pytón: Zo smrteľného zovretia sa dostala po dvoch hodinách

19.09.2024 17:39

Vo chvíľach, keď pripravovala večeru vo svojom dome, pocítila ostrú bolesť v stehne a keď sa pozrela dolu, zbadala, ako sa jej zmocňuje veľký had.

Izrael, Palestína, rukojemníci, Hamas, izraelskí civilisti

Izrael predložil nový rámec pre dohodu o rukojemníkoch a prímerí v Pásme Gazy

19.09.2024 17:18

Podľa navrhovaného plánu by malo dôjsť aj k prepusteniu palestínskych väzňov uväznených v Izraeli či demilitarizácii Pásma Gazy.

Libanon, Hizballáh, Hassan Nasralláh,

Výbuchy pagerov sú pre nás tvrdou ranou, je to vyhlásenie vojny, vyhlásil šéf Hizballáhu

19.09.2024 17:15

Podľa Nasralláha zvýšil Hizballáh svoju bojovú pohotovosť.

Záchranársky vrtuľník

Na škole v Kráľovskom Chlmci sa po páde z okna vážne zranil chlapec. Vrtuľníkom ho previezli do Košíc

19.09.2024 17:11

Potvrdili to záchranári, polícia aj primátor mesta Karol Pataky.

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

Autor blogu

Kategórie

Archív