Ini adalah artikel susulan daripada yang sebelumnya. Kami akan membahas bagaimana menyempurnakan pertanyaan, merumuskan kriteria carian yang lebih kompleks dengan parameter yang berbeza, dan memahami bentuk web halaman pertanyaan Apache Solr yang berbeza. Juga, kita akan membincangkan cara memproses hasil carian menggunakan format output yang berbeza seperti XML, CSV, dan JSON.
Menanya Apache Solr
Apache Solr direka sebagai aplikasi dan perkhidmatan web yang berjalan di latar belakang. Hasilnya adalah bahawa setiap aplikasi klien dapat berkomunikasi dengan Solr dengan mengirimkan pertanyaan kepadanya (fokus artikel ini), memanipulasi inti dokumen dengan menambahkan, mengemas kini, dan menghapus data yang diindeks, dan mengoptimumkan data inti. Terdapat dua pilihan - melalui papan pemuka / antara muka web atau menggunakan API dengan mengirimkan permintaan yang sesuai.
Adalah biasa untuk menggunakan pilihan pertama untuk tujuan ujian dan bukan untuk akses biasa. Gambar di bawah menunjukkan Papan Pemuka dari Antaramuka Pengguna Pentadbiran Apache Solr dengan borang pertanyaan yang berbeza dalam penyemak imbas web Firefox.
Pertama, dari menu di bawah bidang pemilihan inti, pilih entri menu "Query". Seterusnya, papan pemuka akan memaparkan beberapa medan input seperti berikut:
- Penangan permintaan (qt):
Tentukan jenis permintaan yang ingin anda hantar ke Solr. Anda dapat memilih antara penangan permintaan lalai “/ select” (query indexed data), “/ update” (update indexed data), dan “/ delete” (hapus data indeks yang ditentukan), atau yang ditentukan sendiri. - Acara pertanyaan (q):
Tentukan nama dan nilai medan mana yang akan dipilih. - Tapis pertanyaan (fq):
Hadkan superset dokumen yang boleh dikembalikan tanpa mempengaruhi skor dokumen. - Susun urut (urutkan):
Tentukan susunan urutan hasil pertanyaan sama ada menaik atau menurun - Tetingkap output (permulaan dan baris):
Hadkan output ke elemen yang ditentukan - Senarai medan (fl):
Mengehadkan maklumat yang disertakan dalam respons pertanyaan ke senarai bidang yang ditentukan. - Format output (wt):
Tentukan format output yang diingini. Nilai lalai adalah JSON.
Mengklik butang Execute Query menjalankan permintaan yang diinginkan. Untuk contoh praktikal, lihat di bawah.
Sebagai pilihan kedua, anda boleh menghantar permintaan menggunakan API. Ini adalah permintaan HTTP yang dapat dikirim ke Apache Solr oleh aplikasi apa pun. Solr memproses permintaan dan mengembalikan jawapan. Kes khas ini adalah menyambung ke Apache Solr melalui Java API. Ini telah dialihkan ke proyek terpisah yang disebut SolrJ [7] - API Java tanpa memerlukan sambungan HTTP.
Sintaks pertanyaan
Sintaks pertanyaan dijelaskan dengan sebaiknya dalam [3] dan [5]. Nama parameter yang berbeza secara langsung sesuai dengan nama bidang kemasukan dalam borang yang dijelaskan di atas. Jadual di bawah menyenaraikannya, ditambah dengan contoh praktikal.
Indeks Parameter Pertanyaan
Parameter | Penerangan | Contohnya |
---|---|---|
q | Parameter pertanyaan utama Apache Solr - nama dan nilai medan. Skor kesamaan mereka mendokumentasikan dengan istilah dalam parameter ini. | Id: 5 kereta: * adilla * *: X5 |
fq | Hadkan set hasil pada dokumen superset yang sesuai dengan penapis, misalnya, yang ditentukan melalui Function Range Query Parser | model id, model |
mulakan | Offset untuk hasil halaman (bermula). Nilai lalai parameter ini ialah 0. | 5 |
barisan | Offset untuk hasil halaman (akhir). Nilai parameter ini adalah 10 secara lalai | 15 |
mengurut | Ini menentukan senarai bidang yang dipisahkan dengan koma, berdasarkan hasil pencarian yang akan disusun | model asc |
fl | Ini menentukan senarai bidang yang akan dikembalikan untuk semua dokumen dalam set hasil | model id, model |
wt | Parameter ini mewakili jenis penulis respons yang ingin kami lihat hasilnya. Nilai ini adalah JSON secara lalai. | json xml |
Pencarian dilakukan melalui permintaan HTTP GET dengan rentetan pertanyaan dalam parameter q. Contoh di bawah akan menjelaskan bagaimana ini berfungsi. Digunakan adalah curl untuk menghantar pertanyaan ke Solr yang dipasang secara tempatan.
- Dapatkan semua set data dari curl kereta teras http: // localhost: 8983 / solr / cars / query?q = *: *
- Dapatkan semua set data dari kereta teras yang mempunyai id 5 curl http: // localhost: 8983 / solr / cars / query?q = id: 5
- Dapatkan model lapangan dari semua set data kereta teras
Pilihan 1 (dengan melarikan diri &): curl http: // localhost: 8983 / solr / cars / pertanyaan?q = id: * \ & fl = modelPilihan 2 (pertanyaan dalam satu tanda):
curl 'http: // localhost: 8983 / solr / cars / pertanyaan?q = id: * & fl = model ' - Ambil semua set data kereta teras yang disusun mengikut harga dalam urutan menurun, dan keluarkan bidang, model, dan harga, hanya (versi dalam satu kutu): curl http: // localhost: 8983 / solr / cars / query -d '
q = *: * &
urutkan = harga turun &
fl = buat, model, harga ' - Dapatkan lima set data pertama kereta teras yang disusun mengikut harga dalam urutan menurun, dan keluarkan bidang, model, dan harga, hanya (versi dalam satu tanda): curl http: // localhost: 8983 / solr / cars / query - d '
q = *: * &
baris = 5 &
urutkan = harga turun &
fl = buat, model, harga ' - Dapatkan lima set data pertama kereta teras yang disusun mengikut harga dalam urutan menurun, dan keluarkan bidang yang dibuat, model, dan harga ditambah skor relevansinya, hanya (versi dalam kutu tunggal): curl http: // localhost: 8983 / solr / kereta / pertanyaan -d '
q = *: * &
baris = 5 &
urutkan = harga turun &
fl = buat, model, harga, skor ' - Kembalikan semua medan yang disimpan dan juga skor relevansinya: curl http: // localhost: 8983 / solr / cars / query -d '
q = *: * &
fl = *, skor '
Selanjutnya, anda boleh menentukan pengendali permintaan anda sendiri untuk menghantar parameter permintaan pilihan ke penghurai pertanyaan untuk mengawal maklumat yang dikembalikan.
Penyusun Pertanyaan
Apache Solr menggunakan penghurai pertanyaan yang disebut - komponen yang menerjemahkan rentetan carian anda menjadi arahan khusus untuk mesin carian. Penghurai pertanyaan terletak di antara anda dan dokumen yang anda cari.
Solr dilengkapi dengan pelbagai jenis penghurai yang berbeza dalam cara pertanyaan yang dikendalikan. Standard Query Parser berfungsi dengan baik untuk pertanyaan berstruktur tetapi kurang bertolak ansur dengan kesalahan sintaks. Pada masa yang sama, kedua DisMax dan Extended DisMax Query Parser dioptimumkan untuk pertanyaan seperti bahasa semula jadi. Mereka dirancang untuk memproses frasa mudah yang dimasukkan oleh pengguna dan untuk mencari istilah individu di beberapa bidang menggunakan pemberat yang berbeza.
Selanjutnya, Solr juga menawarkan apa yang disebut Function Queries yang membolehkan fungsi digabungkan dengan pertanyaan untuk menghasilkan skor relevansi tertentu. Penghurai ini dinamakan Function Query Parser dan Function Range Query Parser. Contoh di bawah menunjukkan yang terakhir untuk memilih semua set data untuk "bmw" (disimpan dalam bidang data membuat) dengan model dari 318 hingga 323:
curl http: // localhost: 8983 / solr / cars / query -d 'q = buat: bmw &
fq = model: [318 HINGGA 323] '
Proses pemprosesan hasil
Menghantar pertanyaan ke Apache Solr adalah satu bahagian, tetapi memproses hasil carian dari yang lain. Pertama, anda boleh memilih antara format respons yang berbeza - dari JSON hingga XML, CSV, dan format Ruby yang dipermudahkan. Cukup tentukan parameter wt yang sesuai dalam pertanyaan. Contoh kod di bawah menunjukkan ini untuk mengambil set data dalam format CSV untuk semua item menggunakan keriting dengan melarikan diri &:
curl http: // localhost: 8983 / solr / cars / pertanyaan?q = id: 5 \ & wt = csvKeluarannya adalah senarai yang dipisahkan koma seperti berikut:
Untuk menerima hasilnya sebagai data XML tetapi kedua-dua medan output membuat dan memodelkan saja, jalankan pertanyaan berikut:
curl http: // localhost: 8983 / solr / cars / pertanyaan?q = *: * \ & fl = buat, model \ & wt = xmlKeluarannya berbeza dan mengandungi tajuk respons dan tindak balas sebenar:
Wget hanya mencetak data yang diterima pada stdout. Ini membolehkan anda memproses tindak balas menggunakan alat baris perintah standard. Untuk menyenaraikan beberapa, ini mengandungi jq [9] untuk JSON, xsltproc, xidel, xmlstarlet [10] untuk XML dan juga csvkit [11] untuk format CSV.
Kesimpulannya
Artikel ini menunjukkan cara yang berbeza untuk menghantar pertanyaan ke Apache Solr dan menerangkan cara memproses hasil carian. Pada bahagian seterusnya, anda akan belajar bagaimana menggunakan Apache Solr untuk mencari di PostgreSQL, sistem pengurusan pangkalan data relasional.
Mengenai pengarang
Jacqui Kabeta adalah pakar persekitaran, penyelidik, pelatih, dan mentor yang gemar. Di beberapa negara Afrika, dia telah bekerja di industri IT dan persekitaran NGO.
Frank Hofmann adalah pemaju IT, pelatih, dan pengarang dan lebih suka bekerja dari Berlin, Geneva, dan Cape Town. Pengarang bersama Buku Pengurusan Pakej Debian tersedia dari dpmb.org
Pautan dan Rujukan
- [1] Apache Solr, https: // lucene.apache.org / solr /
- [2] Frank Hofmann dan Jacqui Kabeta: Pengenalan kepada Apache Solr. Bahagian 1, http: // linuxhint.com
- [3] Yonik Seelay: Solr Query Syntax, http: // yonik.com / solr / pertanyaan-sintaks /
- [4] Yonik Seelay: Solr Tutorial, http: // yonik.com / solr-tutorial /
- [5] Apache Solr: Meminta Data, Tutorialspoint, https: // www.titik tutorial.com / apache_solr / apache_solr_querying_data.htm
- [6] Lucene, https: // lucene.apache.org /
- [7] SolrJ, https: // lucene.apache.org / solr / panduan / 8_8 / menggunakan-solrj.html
- [8] curl, https: // curl.se /
- [9] jq, https: // github.com / stedolan / jq
- [10] xmlstarlet, http: // xmlstar.sumber kekuatan.bersih /
- [11] csvkit, https: // csvkit.readthedocs.io / en / terkini /