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.
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
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.
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!