Rumah >pembangunan bahagian belakang >tutorial php >Membangunkan keupayaan carian berbilang bahasa menggunakan PHP dan Carian Manticore
Membangunkan fungsi carian berbilang bahasa menggunakan PHP dan Manticore Search
Dengan perkembangan pesat globalisasi, semakin banyak tapak web dan aplikasi perlu menyokong fungsi carian berbilang bahasa untuk memenuhi keperluan pengguna global. Artikel ini akan memperkenalkan cara menggunakan PHP dan Manticore Search (enjin carian berprestasi tinggi berdasarkan enjin carian sumber terbuka Sphinx) untuk melaksanakan keupayaan carian berbilang bahasa, dengan contoh kod.
Pertama, kita perlu memasang dan mengkonfigurasi Manticore Search pada pelayan. Anda boleh merujuk kepada dokumentasi rasmi Carian Manticore (https://manual.manticoresearch.com/Installation) untuk melengkapkan pemasangan.
Sebelum membuat carian, kita perlu mengimport data untuk dicari ke dalam Carian Manticore. Katakan kita mempunyai jadual bernama "produk" yang mengandungi maklumat produk, yang mengandungi medan berbilang bahasa, seperti "product_name_en" dan "product_name_cn".
Pertama, kita perlu menyediakan indeks Carian Manticore Anda boleh menggunakan alat baris arahan yang disediakan oleh Manticore Search untuk melengkapkan langkah ini.
$ indexer -c /path/to/manticore.conf --all
Kemudian, kita boleh menggunakan antara muka MySQL yang disediakan oleh Manticore Search untuk mengimport data. Pertama, kita perlu membuat sambungan MySQL.
$mysqli = new mysqli('host', 'user', 'password', 'database'); if ($mysqli->connect_errno) { die("Failed to connect to MySQL: " . $mysqli->connect_error); }
Seterusnya, kita boleh menggunakan pernyataan SQL untuk memasukkan data ke dalam Carian Manticore.
$sql = 'SELECT id, product_name_en, product_name_cn FROM products'; $result = $mysqli->query($sql); $all_rows = ''; while ($row = $result->fetch_assoc()) { $all_rows .= '(' . $row['id'] . ', "' . $row['product_name_en'] . '", "' . $row['product_name_cn'] . '"),'; } $all_rows = rtrim($all_rows, ','); $sql = 'REPLACE INTO products (id, product_name_en, product_name_cn) VALUES ' . $all_rows; $mysqli->query($sql); if ($mysqli->error) { die("Failed to insert data into Manticore Search: " . $mysqli->error); }
Melalui kod di atas, kami berjaya mengimport data ke dalam Carian Manticore.
Seterusnya, kita perlu menulis kod PHP yang boleh menyokong carian berbilang bahasa.
$query = 'apple'; // 根据当前语言选择搜索字段 $language = 'en'; if ($language === 'cn') { $search_field = 'product_name_cn'; } else { $search_field = 'product_name_en'; } // 连接Manticore Search的搜索接口 $cl = new ManticoreSearchClient(); $cl->connect(); // 执行搜索 $result = $cl->search('products', $query, array('index' => 'products', 'field_weights' => array($search_field => 100))); // 解析搜索结果 $matches = array(); if ($result['total'] > 0) { foreach ($result['matches'] as $match) { $matches[] = $match['attrs']['id']; } } // 查询原始数据 $sql = 'SELECT * FROM products WHERE id IN (' . implode(',', $matches) . ')'; $result = $mysqli->query($sql); while ($row = $result->fetch_assoc()) { echo $row['product_name_en'] . '<br>'; }
Melalui kod di atas, kita boleh memilih medan carian yang sepadan berdasarkan bahasa semasa dan melakukan carian berdasarkan kata kunci carian. Akhir sekali, kami boleh mendapatkan hasil carian yang berkaitan melalui jadual data asal.
Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP dan Carian Manticore untuk membangunkan fungsi carian berbilang bahasa. Dengan kod sampel di atas, kami boleh melaksanakan fungsi carian berbilang bahasa dengan mudah untuk memenuhi keperluan pengguna global. Pada masa yang sama, Manticore Search juga menyediakan pelbagai pilihan konfigurasi dan antara muka operasi untuk mengoptimumkan lagi prestasi dan fungsi carian.
Saya harap artikel ini dapat membantu rakan-rakan yang membangunkan fungsi carian berbilang bahasa. Jika anda mempunyai sebarang pertanyaan, sila tinggalkan mesej di ruang komen.
Atas ialah kandungan terperinci Membangunkan keupayaan carian berbilang bahasa menggunakan PHP dan Carian Manticore. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!