Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Sphinx menulis analisis contoh fungsi carian yang cekap

Sphinx menulis analisis contoh fungsi carian yang cekap

WBOY
WBOYasal
2023-10-03 08:40:46730semak imbas

Sphinx 编写高效的搜索功能实例解析

Sphinx ialah enjin carian teks penuh sumber terbuka yang boleh mengendalikan keperluan carian teks berskala besar dengan cekap. Artikel ini akan menggunakan contoh untuk menganalisis cara menggunakan Sphinx untuk menulis fungsi carian yang cekap dan memberikan contoh kod khusus.

  1. Pasang Sphinx
    Pertama, kita perlu memasang Sphinx pada pelayan. Anda boleh memuat turun versi terkini pemasang dari tapak web rasmi Sphinx (https://sphinxsearch.com/) dan memasangnya mengikut arahan.
  2. Buat indeks
    Sebelum kita mula menulis fungsi carian, kita perlu mencipta indeks terlebih dahulu untuk menyimpan data teks yang perlu dicari. Katakan aplikasi kami perlu mencari maklumat tentang beberapa produk Setiap produk mengandungi atribut seperti tajuk, perihalan dan harga. Kita boleh membuat indeks yang dipanggil "produk".

    Pertama, buat pangkalan data MySQL yang disambungkan ke Sphinx dan import data produk. Katakan kita mempunyai pangkalan data yang dipanggil "produk" dan mengandungi jadual yang dipanggil "product_info" yang mengandungi medan seperti tajuk, perihalan dan harga produk.

    Seterusnya, kita perlu mencipta fail konfigurasi yang sesuai untuk indeks "produk". Buat fail bernama "products.conf" dan tambah kandungan berikut:

    source products
    {
        type = mysql
        sql_host = localhost
        sql_user = username
        sql_pass = password
        sql_db = products
        sql_port = 3306
    
        sql_query = SELECT id, title, description, price FROM product_info
        sql_attr_uint = price
    }
    
    index products
    {
        source = products
        path = /path/to/index/products
        charset_type = utf-8
    }

    Ini menentukan maklumat sambungan dan pernyataan pertanyaan untuk pangkalan data MySQL. "sql_attr_uint = price" bermaksud medan harga ialah atribut jenis integer yang tidak ditandatangani.

    Akhir sekali, gunakan arahan berikut untuk mencipta indeks:

    $ indexer --config /path/to/products.conf --all
  3. Menulis fungsi carian
    Kini, kita boleh mula menulis fungsi carian Sphinx. Berikut ialah contoh PHP mudah:

    <?php
    require('sphinxapi.php');
    
    $sphinx = new SphinxClient();
    $sphinx->setServer('localhost', 9312);
    
    $keyword = $_GET['keyword'];
    
    $sphinx->setMatchMode(SPH_MATCH_ANY);
    $sphinx->setSortMode(SPH_SORT_RELEVANCE);
    
    $result = $sphinx->query($keyword, 'products');
    
    if ($result['total'] > 0) {
        foreach ($result['matches'] as $match) {
            echo 'ID: ' . $match['id'] . '<br>';
            echo 'Title: ' . $match['attrs']['title'] . '<br>';
            echo 'Description: ' . $match['attrs']['description'] . '<br>';
            echo 'Price: ' . $match['attrs']['price'] . '<br><br>';
        }
    } else {
        echo 'No results found.';
    }
    ?>

    Kod ini mula-mula mencipta objek SphinxClient dan menentukan alamat dan nombor port pelayan Sphinx. Kemudian, terima kata kunci yang dimasukkan oleh pengguna dan tetapkan mod padanan dan mod isihan.

    Akhir sekali, panggil kaedah query() untuk melakukan carian, dan gelungkan hasil carian untuk mencetak maklumat produk yang sepadan.

  4. Jalankan ujian
    Simpan kod di atas sebagai fail PHP (cth. search.php) dan gunakannya ke pelayan web anda. Anda kemudiannya boleh mencari dengan mengakses search.php?keyword=keyword.

    Sebagai contoh, melawati http://yourdomain.com/search.php?keyword=telefon bimbit akan mencari produk yang mengandungi kata kunci "telefon mudah alih" dan memaparkan hasilnya pada halaman.

Melalui langkah di atas, kami telah melaksanakan fungsi carian yang cekap berdasarkan Sphinx. Sphinx menyediakan pelbagai pilihan konfigurasi dan sintaks pertanyaan untuk mengoptimumkan prestasi carian mengikut keperluan sebenar. Kami berharap contoh kod yang disediakan dalam artikel ini dapat membantu pembaca memahami dan menggunakan Sphinx untuk menulis fungsi carian yang cekap.

Atas ialah kandungan terperinci Sphinx menulis analisis contoh fungsi carian yang cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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