Rumah > Artikel > pembangunan bahagian belakang > Membina enjin carian menggunakan PHP dan Apache Solr
Dengan populariti Internet dan peranti mudah alih, enjin carian telah menjadi pilihan pertama untuk orang ramai mendapatkan maklumat dan mencari jawapan. Membina enjin carian yang cekap dan tepat memerlukan penggunaan pelbagai teknologi dan alatan. Artikel ini akan memperkenalkan cara menggunakan PHP dan Apache Solr untuk membina enjin carian.
1. Apakah itu Apache Solr?
Apache Solr ialah platform carian sumber terbuka berdasarkan Lucene, ditulis dalam Java, menyediakan fungsi carian dan analisis teks yang pantas, berskala dan cekap. Solr boleh menyimpan, mengindeks dan mencari teks, XML, JSON dan format data lain. Ia menyokong berbilang bahasa pertanyaan, seperti sintaks pertanyaan Lucene, SQL, XPath, XSLT, dll.
2. Mengapa memilih Apache Solr?
Berbanding dengan perisian enjin carian lain, Solr mempunyai kelebihan berikut:
3. Bagaimana untuk menggunakan Apache Solr?
Mula-mula anda perlu memuat turun versi terbaharu Apache Solr dan nyahzipnya ke direktori yang sesuai. Kemudian, ikuti dokumentasi rasmi (https://lucene.apache.org/solr/guide/8_6/) untuk mengkonfigurasi dan memulakan.
Fungsi teras Solr adalah untuk mengindeks dan mencari data adalah untuk menyimpan data pada pelayan Solr dengan cara tertentu. Solr menyokong berbilang format data, seperti JSON, XML, CSV, dll.
Yang berikut menggunakan format JSON sebagai contoh untuk memperkenalkan cara membuat indeks:
Mula-mula, anda perlu mentakrifkan fail schema.xml untuk menerangkan struktur data dan konfigurasi indeks. schema.xml mengandungi kandungan berikut:
Contohnya:
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <field name="title" type="text_general" indexed="true" stored="true" multiValued="false" /> <field name="content" type="text_general" indexed="true" stored="true" multiValued="true" /> <copyField source="title" dest="text" /> <copyField source="content" dest="text" /> <uniqueKey>id</uniqueKey>
Seterusnya, gunakan arahan curl untuk mengimport data ke dalam Solr:
curl http://localhost:8983/solr/mycore/update -H “Content-Type:application/json" -d '[ { "id":"1", "title":"Solr是什么", "content":"Solr是一款开源搜索引擎" }, { "id":"2", "title":"Solr如何使用", "content":"可以使用Java或HTTP协议发送请求到Solr服务器" }, { "id":"3", "title":"Solr的优势是什么", "content":["高效性", "可扩展性", "易用性"] } ]’
Arahan di atas bermaksud mengimport data dengan ID 1, 2, dan 3 ke dalam perpustakaan indeks mycore.
Bahasa pertanyaan Solr menyokong pelbagai kaedah pertanyaan, seperti pertanyaan kad bebas, pertanyaan frasa, pertanyaan julat, pertanyaan Boolean, dsb. Berikut mengambil pertanyaan HTTP sebagai contoh:
http://localhost:8983/solr/mycore/select?q=title:Solr&fq=content:开源&sort=id+desc&start=0&rows=10&fl=title,id
Pertanyaan di atas bermaksud:
4. Bagaimana menggunakan PHP untuk menyambung ke pelayan Solr?
PHP menyediakan sambungan curl, yang boleh digunakan untuk menghantar permintaan HTTP. Berikut ialah contoh mudah untuk menyambung ke pelayan Solr:
<?php $url = 'http://localhost:8983/solr/mycore/select?q=title:Solr'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); echo $response; ?>
Kod di atas bermaksud menghantar permintaan pertanyaan ke pelayan Solr, dan hasil yang dikembalikan akan disimpan dalam pembolehubah $response.
5. Bagaimana menggunakan PHP dan Solr untuk membina enjin carian?
Pertama, anda perlu mengimport data untuk dicari ke dalam Solr Anda boleh menggunakan arahan curl atau menulis kod dalam PHP untuk melaksanakan operasi import. Contohnya:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://localhost:8983/solr/mycore/update?commitWithin=1000'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json')); curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); $response = curl_exec($ch); curl_close($ch);
Kod di atas menunjukkan penggunaan PHP untuk mengimport data dalam $json_data ke dalam perpustakaan indeks bernama mycore dan menyelesaikan operasi penyerahan dalam masa 1 saat.
Gunakan PHP untuk menyambung ke pelayan Solr, hubungi antara muka pertanyaan dan kembalikan hasil pertanyaan. Contohnya:
$url = 'http://localhost:8983/solr/mycore/select?q='.$query.'&start='.($page-1)*$rows.'&rows='.$rows.'&wt=json&indent=true'; $response = file_get_contents($url);
Kod di atas bermaksud mentakrifkan syarat pertanyaan $pertanyaan Pada halaman $halaman, setiap halaman memaparkan $baris data. Gunakan fungsi file_get_contents untuk mendapatkan hasil pertanyaan daripada pelayan Solr.
Menghuraikan hasil pertanyaan ke dalam tatasusunan PHP, dan kemudian melaksanakan pengisihan, pengisihan, penapisan dan operasi lain seperti yang diperlukan, dan akhirnya memaparkan data pada halaman. Contohnya:
$data = json_decode($response, true); foreach ($data['response']['docs'] as $doc) { echo '<a href="'.$doc['url'].'">'.$doc['title'].'</a><br/>'; }
Kod di atas mewakili merentasi hasil pertanyaan dan memaparkan tajuk dan pautan setiap bahagian data.
6. Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP dan Apache Solr untuk membina enjin carian. Melalui penjelasan terperinci tentang fungsi asas Solr, kaedah penggunaan dan gabungan dengan PHP, pembaca boleh dengan cepat menguasai penggunaan Solr dan menggunakan PHP untuk menulis kod enjin carian. Solr menyediakan keupayaan carian dan analisis yang berkuasa dan sesuai untuk membina pelbagai jenis enjin carian.
Atas ialah kandungan terperinci Membina enjin carian menggunakan PHP dan Apache Solr. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!