Bangunkan gesaan carian pantas menggunakan PHP dan Carian Manticore

WBOY
Lepaskan: 2023-08-05 22:26:01
asal
718 orang telah melayarinya

Gunakan PHP dan Manticore Search untuk membangunkan fungsi gesaan carian pantas

Pengenalan

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.

Pengenalan kepada Manticore Search

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.

Persediaan

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
Salin selepas log masuk

安装成功后,我们需要在PHP的扩展配置文件中启用这个扩展。我们可以在php.ini中添加以下行:

extension=manticore.so
Salin selepas log masuk

重启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();
?>
Salin selepas log masuk

在上面的代码中,我们首先创建一个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);
?>
Salin selepas log masuk

在上面的代码中,我们首先创建一个Client实例并进行连接。然后,我们定义了一个$keyword变量,用于存储用户输入的关键字。

接着,我们使用SELECT语句来执行查询。通过将用户输入的关键字作为查询的一部分,并使用MATCH子句来匹配索引中的内容,我们可以获取与关键字匹配的结果。

在这个例子中,我们对namerrreee

Selepas pemasangan berjaya, kami perlu mendayakan sambungan ini dalam fail konfigurasi sambungan PHP. Kita boleh menambah baris berikut dalam php.ini:

rrreee

Mulakan semula PHP untuk perubahan berkuat kuasa.

Mengindeks

Sebelum 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 contoh Client 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 nama. Anda boleh melaraskan berat medan mengikut keadaan sebenar. 🎜🎜Akhir sekali, kami menukar cadangan carian ke dalam format JSON dan mengeluarkannya. 🎜🎜Kesimpulan🎜🎜Dalam artikel ini, kami mempelajari cara menggunakan Carian PHP dan Manticore untuk melaksanakan ciri gesaan carian pantas. Dengan membina indeks yang sesuai dan menggunakan pernyataan pertanyaan yang betul, kami boleh membolehkan pengguna mendapatkan cadangan carian yang berkaitan dengan serta-merta semasa mereka memasukkan kata kunci. Pendekatan ini boleh meningkatkan pengalaman carian pengguna. 🎜🎜Disebabkan keterbatasan ruang, artikel ini hanya menyediakan kod sampel mudah, yang boleh anda ubah suai dan lanjutkan mengikut keperluan anda. Saya harap artikel ini dapat membantu anda meneroka dan menggunakan Carian Manticore untuk membina keupayaan carian yang lebih berkuasa. 🎜

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!

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