Rumah >pembangunan bahagian belakang >tutorial php >Membina enjin carian menggunakan PHP dan Apache Solr

Membina enjin carian menggunakan PHP dan Apache Solr

王林
王林asal
2023-06-25 08:28:031325semak imbas

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:

  1. Kecekapan: Solr boleh memproses sejumlah besar data dan boleh mencari maklumat yang diperlukan dengan cepat semasa membuat pertanyaan.
  2. Skalabiliti: Solr boleh dikembangkan kepada ratusan pelayan dan menyokong pengembangan mendatar.
  3. Kemudahan penggunaan: Solr menyokong berbilang bahasa pertanyaan dan format data, dan konfigurasi serta penggunaan agak mudah.

3. Bagaimana untuk menggunakan Apache Solr?

  1. Memasang 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.

  1. Buat indeks

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:

  1. medan: mentakrifkan medan indeks dan jenis data.
  2. copyField: Tentukan peraturan untuk menyalin dari satu medan ke medan yang lain.
  3. uniqueKey: Mentakrifkan pengecam unik bagi dokumen yang diindeks.

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.

  1. Data pertanyaan

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:

  1. Syarat pertanyaan: tajuk ialah Solr.
  2. Keadaan penapis: kandungan mengandungi "sumber terbuka".
  3. Isih: Isih mengikut id dalam tertib menurun.
  4. Paging: Bermula dari rekod ke-0, ambil 10 rekod.
  5. Medan kembali: Hanya medan tajuk dan id dikembalikan.

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?

  1. Buat indeks

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.

  1. Data pertanyaan

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.

  1. Memaparkan data

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!

Kenyataan:
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