Gunakan PHP dan Manticore Search untuk membangunkan fungsi gesaan carian pantas
Kini, dengan perkembangan Internet, enjin carian telah menjadi salah satu alat utama untuk orang ramai mendapatkan maklumat. Pengguna biasanya menggunakan kata kunci untuk menanyakan kandungan yang mereka minati, dan enjin carian akan mengembalikan hasil yang berkaitan berdasarkan kata kunci ini.
Walau bagaimanapun, kaedah carian tradisional mempunyai beberapa had. Pengguna mesti memasukkan kata kunci yang lengkap untuk mendapatkan hasil yang tepat, yang boleh meningkatkan masa menunggu pengguna. Untuk meningkatkan pengalaman pengguna, kami boleh mempertimbangkan untuk menggunakan ciri gesaan carian pantas, yang membolehkan pengguna mendapatkan cadangan carian yang berkaitan dengan serta-merta apabila memasukkan kata kunci.
Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP dan Carian Manticore untuk melaksanakan fungsi gesaan carian pantas.
Manticore Search ialah enjin carian teks penuh sumber terbuka yang merupakan cabang daripada Carian Sphinx dan mempunyai prestasi yang lebih tinggi serta lebih banyak ciri.
Manticore Search menyediakan fungsi yang dipanggil "penyelesaian" untuk melaksanakan gesaan carian. Dengan membina indeks yang sesuai dan menggunakan pernyataan pertanyaan yang sesuai, kami boleh mencapai cadangan carian yang pantas dan tepat.
Sebelum kita mula, kita perlu memasang Manticore Search dan pastikan PHP menyokong komunikasi dengan Manticore Search. Kami boleh memasang sambungan yang berkaitan melalui perintah pecl
: pecl
命令来安装相关的扩展:
pecl install manticore
安装成功后,我们需要在PHP的扩展配置文件中启用这个扩展。我们可以在php.ini
中添加以下行:
extension=manticore.so
重启PHP以使更改生效。
在我们开始之前,我们需要准备一些数据并建立相应的索引。假设我们有一个名为"products"的表,包含了产品的名称和描述。
我们可以使用以下代码来建立索引:
<?php require_once 'ManticoreSearch.php'; $client = new ManticoreSearchClient([ 'host' => 'localhost', 'port' => 9306, ]); $client->connect(); $index = 'products'; $table = 'products'; $client->query("DELETE FROM $table WHERE 1"); $client->query("TRUNCATE RTINDEX $index"); $data = [ ['id' => 1, 'name' => 'iPhone X', 'description' => 'A revolutionary new iPhone.'], ['id' => 2, 'name' => 'Samsung Galaxy S9', 'description' => 'The latest Samsung smartphone.'], ['id' => 3, 'name' => 'Google Pixel 3', 'description' => 'A powerful Android phone.'], // 添加更多产品数据... ]; $client->index($table, $data); $client->query("ALTER RTINDEX $index ADD COLUMN completion TEXT"); $client->disconnect(); ?>
在上面的代码中,我们首先创建一个Client
实例,然后使用connect
方法连接到Manticore Search服务。接下来,我们清空并重建相应的表和索引。
接着,我们向表中添加一些产品的数据。确保将实际的产品数据添加到$data
数组中。
最后,我们使用ALTER RTINDEX
命令向索引添加一个用于存储搜索提示的列。
现在,我们已经准备好了数据和索引,可以开始创建搜索提示了。我们可以使用以下代码来实现:
<?php require_once 'ManticoreSearch.php'; $client = new ManticoreSearchClient([ 'host' => 'localhost', 'port' => 9306, ]); $client->connect(); $index = 'products'; $table = 'products'; $keyword = isset($_GET['keyword']) ? $_GET['keyword'] : ''; $query = "SELECT * FROM $index WHERE MATCH(:keyword) OPTION field_weights=(name=10, description=5) LIMIT 10"; $params = [ 'keyword' => "@(name,description) $keyword*", ]; $result = $client->query($query, $params); $suggestions = []; if ($result !== false) { foreach ($result['hits'] as $hit) { $suggestions[] = $hit['attrs']['name']; } } $client->disconnect(); echo json_encode($suggestions); ?>
在上面的代码中,我们首先创建一个Client
实例并进行连接。然后,我们定义了一个$keyword
变量,用于存储用户输入的关键字。
接着,我们使用SELECT
语句来执行查询。通过将用户输入的关键字作为查询的一部分,并使用MATCH
子句来匹配索引中的内容,我们可以获取与关键字匹配的结果。
在这个例子中,我们对name
rrreee
php.ini
: rrreee
Mulakan semula PHP untuk perubahan berkuat kuasa. MengindeksSebelum kita mula, kita perlu menyediakan beberapa data dan mencipta indeks yang sepadan. Katakan kita mempunyai jadual yang dipanggil "produk" yang mengandungi nama dan perihalan produk. Kami boleh menggunakan kod berikut untuk membina indeks: 🎜rrreee🎜Dalam kod di atas, kami mula-mula mencipta contohClient
dan kemudian menyambung ke perkhidmatan Carian Manticore menggunakan connect kod> kaedah . Seterusnya, kami mengosongkan dan membina semula jadual dan indeks yang sepadan. 🎜🎜Seterusnya, kami menambah beberapa data produk pada jadual. Pastikan anda menambah data produk sebenar pada tatasusunan <code>$data
. 🎜🎜Akhir sekali, kami menggunakan perintah ALTER RTINDEX
untuk menambah lajur pada indeks untuk menyimpan petunjuk carian. 🎜🎜Buat Petua Carian🎜🎜Sekarang kami mempunyai data dan indeks kami sedia, kami boleh mula mencipta petua carian. Kita boleh menggunakan kod berikut untuk mencapai ini: 🎜rrreee🎜 Dalam kod di atas, kita mula-mula mencipta contoh Client
dan menyambung. Kemudian, kami mentakrifkan pembolehubah $keyword
untuk menyimpan kata kunci yang dimasukkan oleh pengguna. 🎜🎜Seterusnya, kami menggunakan pernyataan SELECT
untuk melaksanakan pertanyaan. Dengan memasukkan kata kunci yang dimasukkan oleh pengguna sebagai sebahagian daripada pertanyaan dan menggunakan klausa MATCH
untuk memadankan kandungan dalam indeks, kami boleh mendapatkan hasil yang sepadan dengan kata kunci. 🎜🎜Dalam contoh ini, kami memberikan pemberat yang lebih tinggi pada medan Atas ialah kandungan terperinci Bangunkan gesaan carian pantas menggunakan PHP dan Carian Manticore. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!