Rumah > pembangunan bahagian belakang > tutorial php > Bangunkan cadangan carian masa nyata menggunakan PHP dan Carian Manticore

Bangunkan cadangan carian masa nyata menggunakan PHP dan Carian Manticore

王林
Lepaskan: 2023-08-06 17:10:01
asal
1216 orang telah melayarinya

Membangunkan fungsi cadangan carian masa nyata menggunakan PHP dan Carian Manticore

Pengenalan:
Dalam aplikasi Internet moden, fungsi cadangan carian masa nyata telah menjadi sangat biasa. Apabila pengguna memasukkan kata kunci dalam kotak carian, sistem secara automatik boleh menggesa cadangan carian yang berkaitan, menjadikannya lebih mudah untuk pengguna mencari kandungan yang mereka inginkan. Artikel ini akan memperkenalkan cara untuk membangunkan fungsi cadangan carian masa nyata menggunakan PHP dan Carian Manticore.

1. Apakah itu Manticore Search?
Manticore Search ialah enjin carian teks penuh sumber terbuka yang dibangunkan berdasarkan Sphinx. Manticore Search menyediakan fungsi carian teks penuh dan halaman muka surat berprestasi tinggi, dan menyokong kemas kini indeks masa nyata. Dalam artikel ini, kami akan memanfaatkan Carian Manticore untuk melaksanakan cadangan carian masa nyata.

2. Persediaan
Sebelum memulakan pembangunan, kita perlu memasang Manticore Search dan sambungan PHP sphinx. Untuk langkah pemasangan khusus, sila rujuk dokumentasi rasmi Carian Manticore.

3. Cipta indeks Carian Manticore
Pertama, kami perlu mencipta indeks Carian Manticore untuk menyimpan data cadangan carian kami. Di sini kami menganggap bahawa kami sedang mencari nama pengguna.

  1. Buat fail konfigurasi indeks
    Pertama, buat fail konfigurasi baharu suggest.conf dalam folder konfigurasi Carian Manticore dan masukkan kandungan berikut:
source suggest
{
    type = mysql
    sql_host = localhost
    sql_user = your_username
    sql_pass = your_password
    sql_db = your_database
    sql_port = 3306
    sql_query_pre = SET NAMES utf8
    sql_query = 
        SELECT name, weight() AS weight 
        FROM users
}

index suggest_index
{
    source = suggest
    path = /path/to/suggest_index
    morphology = none
    min_infix_len = 1
}
Salin selepas log masuk

Anda perlu mengubah suai maklumat sambungan pangkalan data dan laluan yang sepadan di sini.

  1. Buat indeks
    Jalankan arahan berikut untuk mencipta indeks:
$ indexer --config suggest.conf --all --rotate
Salin selepas log masuk

4 Tulis kod PHP
Seterusnya, kita perlu menulis kod PHP untuk melaksanakan fungsi cadangan carian masa nyata.

  1. Menyambung ke Manticore Search
    Pertama, dalam kod PHP, kita perlu menyambung ke Manticore Search. Kita boleh menggunakan sambungan sphinxapi untuk mencapai perkara ini:
<?php
$host = 'localhost';
$port = 9306;
$index = 'suggest_index';

$cl = new SphinxClient();
$cl->SetServer($host, $port);
$cl->SetConnectTimeout(1); // 设置连接超时时间
$cl->SetArrayResult(true); // 将结果转换为数组
Salin selepas log masuk
  1. Mengendalikan input pengguna
    Seterusnya, kita perlu mendapatkan kata kunci yang dimasukkan oleh pengguna dalam kotak carian dan menghantarnya ke Carian Manticore untuk carian. Kami boleh menggunakan kaedah GET atau POST untuk mendapatkan input pengguna:
<?php
$input = $_GET['q']; // 获取用户输入的关键字
Salin selepas log masuk
  1. Cari
    Gunakan Manticore Search untuk mencari dan mendapatkan hasil carian:
<?php
$res = $cl->Query($input, $index);
Salin selepas log masuk
  1. Cadangan carian keluaran
    Proses hasil carian menjadi cadangan carian dan gunakan JSON Format output ke hujung hadapan:
<?php
$data = [];

if ($res && $res['total']) {
    foreach ($res['matches'] as $match) {
        $data[] = ['name' => $match['attrs']['name']];
    }
}

echo json_encode($data);
Salin selepas log masuk

5. Kod bahagian hadapan
Akhir sekali, kita perlu menulis kod bahagian hadapan untuk menghantar permintaan ke bahagian belakang PHP dan menerima hasil cadangan carian.

  1. Kod HTML
<!DOCTYPE html>
<html>
<head>
    <title>实时搜索建议</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
    <input type="text" id="search-input" placeholder="请输入搜索关键字">
    <ul id="search-suggestions"></ul>

    <script>
        $(function() {
            var timer;

            $('#search-input').on('input', function() {
                clearTimeout(timer);

                var query = $(this).val();

                timer = setTimeout(function() {
                    $.get('suggest.php', { q: query }, function(data) {
                        var suggestions = '';

                        $.each(data, function(_, item) {
                            suggestions += '<li>' + item.name + '</li>';
                        });

                        $('#search-suggestions').html(suggestions);
                    });
                }, 300);
            });
        });
    </script>
</body>
</html>
Salin selepas log masuk

6. Ringkasan
Dengan menggunakan Carian PHP dan Manticore, kami boleh melaksanakan fungsi cadangan carian masa nyata dengan mudah. Ini boleh meningkatkan pengalaman carian pengguna dan membantu pengguna mencari perkara yang mereka cari dengan lebih cepat. Semoga artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Bangunkan cadangan carian masa nyata menggunakan PHP dan Carian Manticore. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan