Ini adalah artikel lanjutan dari yang sebelumnya. Kami akan membahas cara menyaring kueri, merumuskan kriteria pencarian yang lebih kompleks dengan parameter yang berbeda, dan memahami berbagai formulir web halaman kueri Apache Solr. Selain itu, kita akan membahas bagaimana mem-posting hasil pencarian menggunakan format output yang berbeda seperti XML, CSV, dan JSON.
Meminta Apache Solr
Apache Solr dirancang sebagai aplikasi web dan layanan yang berjalan di latar belakang. Hasilnya adalah aplikasi klien apa pun dapat berkomunikasi dengan Solr dengan mengirimkan kueri ke sana (fokus artikel ini), memanipulasi inti dokumen dengan menambahkan, memperbarui, dan menghapus data yang diindeks, dan mengoptimalkan data inti. Ada dua opsi - melalui dasbor/antarmuka web atau menggunakan API dengan mengirimkan permintaan yang sesuai.
Adalah umum untuk menggunakan pilihan pertama untuk tujuan pengujian dan bukan untuk akses reguler. Gambar di bawah ini menunjukkan Dasbor dari Antarmuka Pengguna Administrasi Apache Solr dengan bentuk kueri yang berbeda di browser web Firefox.
Pertama, dari menu di bawah bidang pilihan inti, pilih entri menu "Query". Selanjutnya dashboard akan menampilkan beberapa field input sebagai berikut:
- Penangan permintaan (qt):
Tentukan jenis permintaan yang ingin Anda kirim ke Solr. Anda dapat memilih antara penangan permintaan default "/ pilih" (data yang diindeks kueri), "/ update" (perbarui data yang diindeks), dan "/ hapus" (hapus data yang diindeks yang ditentukan), atau yang ditentukan sendiri. - Peristiwa kueri (q):
Tentukan nama dan nilai bidang mana yang akan dipilih. - Kueri filter (fq):
Batasi superset dokumen yang dapat dikembalikan tanpa memengaruhi skor dokumen. - Urutkan urutan (sort):
Tentukan urutan hasil kueri menjadi naik atau turun - Jendela keluaran (mulai dan baris):
Batasi output ke elemen yang ditentukan - Daftar bidang (fl):
Membatasi informasi yang disertakan dalam respons kueri ke daftar bidang tertentu. - Format keluaran (berat):
Tentukan format output yang diinginkan. Nilai defaultnya adalah JSON.
Mengklik tombol Execute Query menjalankan permintaan yang diinginkan. Untuk contoh praktis, lihat di bawah.
sebagai pilihan kedua, Anda dapat mengirim permintaan menggunakan API. Ini adalah permintaan HTTP yang dapat dikirim ke Apache Solr oleh aplikasi apa pun. Solr memproses permintaan dan mengembalikan jawaban. Kasus khusus ini menghubungkan ke Apache Solr melalui Java API. Ini telah dialihdayakan ke proyek terpisah yang disebut SolrJ [7] - API Java tanpa memerlukan koneksi HTTP.
Sintaks kueri
Sintaks kueri paling baik dijelaskan dalam [3] dan [5]. Nama parameter yang berbeda secara langsung sesuai dengan nama bidang entri dalam formulir yang dijelaskan di atas. Tabel di bawah ini mencantumkannya, ditambah contoh praktis.
Indeks Parameter Kueri
Parameter | Deskripsi | Contoh |
---|---|---|
q | Parameter kueri utama Apache Solr - nama dan nilai bidang. Kesamaan skor mereka mendokumentasikan istilah dalam parameter ini. | nomor: 5 mobil:*adilla* *:X5 |
fq | Batasi hasil yang disetel ke dokumen superset yang cocok dengan filter, misalnya, yang ditentukan melalui Parser Kueri Rentang Fungsi | model identitas, model |
Mulailah | Offset untuk hasil halaman (mulai). Nilai default dari parameter ini adalah 0. | 5 |
baris | Offset untuk hasil halaman (akhir). Nilai parameter ini adalah 10 secara default | 15 |
menyortir | Ini menentukan daftar bidang yang dipisahkan dengan koma, berdasarkan hasil kueri yang akan diurutkan | model asc |
fl | Ini menentukan daftar bidang yang akan dikembalikan untuk semua dokumen di kumpulan hasil | model identitas, model |
wt | Parameter ini mewakili tipe penulis tanggapan yang ingin kita lihat hasilnya. Nilai ini adalah JSON secara default. | json xml |
Pencarian dilakukan melalui permintaan HTTP GET dengan string kueri dalam parameter q. Contoh di bawah ini akan memperjelas cara kerjanya. Yang digunakan adalah curl untuk mengirim kueri ke Solr yang diinstal secara lokal.
- Ambil semua set data dari curl mobil inti http://localhost:8983/solr/cars/query?q=*:*
- Ambil semua kumpulan data dari mobil inti yang memiliki id 5 curl http://localhost:8983/solr/cars/query?q=id:5
- Ambil model lapangan dari semua kumpulan data mobil inti
Opsi 1 (dengan lolos &): curl http://localhost:8983/solr/cars/query?q=id:*\&fl=modelOpsi 2 (permintaan dalam tanda centang tunggal):
curl 'http://localhost:8983/solr/cars/query?q=id:*&fl=model' - Ambil semua kumpulan data mobil inti yang diurutkan berdasarkan harga dalam urutan menurun, dan keluarkan bidang pembuatan, model, dan harga, hanya (versi dalam tanda centang tunggal): curl http://localhost:8983/solr/cars/query -d '
q=*:*&
sort=desc harga&
fl=membuat,model,harga ' - Ambil lima dataset pertama dari mobil inti yang diurutkan berdasarkan harga dalam urutan menurun, dan keluarkan hanya bidang pembuatan, model, dan harga (versi dalam centang tunggal): curl http://localhost:8983/solr/cars/query - d '
q=*:*&
baris=5&
sort=desc harga&
fl=membuat,model,harga ' - Ambil lima dataset pertama dari mobil inti yang diurutkan berdasarkan harga dalam urutan menurun, dan keluarkan bidang membuat, model, dan harga ditambah skor relevansinya, hanya (versi dalam kutu tunggal): curl http://localhost:8983/solr/ mobil/permintaan -d '
q=*:*&
baris=5&
sort=desc harga&
fl=membuat,model,harga,skor ' - Kembalikan semua bidang yang disimpan serta skor relevansi: curl http://localhost:8983/solr/cars/query -d '
q=*:*&
fl=*,skor '
Selanjutnya, Anda dapat menentukan penangan permintaan Anda sendiri untuk mengirim parameter permintaan opsional ke parser kueri untuk mengontrol informasi apa yang dikembalikan.
Pengurai Kueri
Apache Solr menggunakan apa yang disebut parser kueri - komponen yang menerjemahkan string pencarian Anda menjadi instruksi khusus untuk mesin pencari. Pengurai kueri berdiri di antara Anda dan dokumen yang Anda cari.
Solr hadir dengan berbagai jenis parser yang berbeda dalam cara menangani kueri yang dikirimkan. Parser Kueri Standar berfungsi dengan baik untuk kueri terstruktur tetapi kurang toleran terhadap kesalahan sintaksis. Pada saat yang sama, Parser Kueri DisMax dan Extended DisMax dioptimalkan untuk kueri seperti bahasa alami. Mereka dirancang untuk memproses frasa sederhana yang dimasukkan oleh pengguna dan untuk mencari istilah individual di beberapa bidang menggunakan pembobotan yang berbeda.
Selain itu, Solr juga menawarkan apa yang disebut Kueri Fungsi yang memungkinkan suatu fungsi digabungkan dengan kueri untuk menghasilkan skor relevansi tertentu. Parser ini diberi nama Function Query Parser dan Function Range Query Parser. Contoh di bawah ini menunjukkan yang terakhir untuk memilih semua set data untuk "bmw" (disimpan di bidang data make) dengan model dari 318 hingga 323:
curl http://localhost:8983/solr/cars/query -d 'q=make:bmw&
fq=model:[318 SAMPAI 323] '
Hasil pasca-pemrosesan
Mengirim kueri ke Apache Solr adalah satu bagian, tetapi pasca-pemrosesan hasil pencarian dari yang lain. Pertama, Anda dapat memilih antara format respons yang berbeda - dari JSON hingga XML, CSV, dan format Ruby yang disederhanakan. Cukup tentukan parameter wt yang sesuai dalam kueri. Contoh kode di bawah ini menunjukkan ini untuk mengambil dataset dalam format CSV untuk semua item menggunakan curl dengan escape &:
curl http://localhost:8983/solr/cars/query?q=id:5\&wt=csvOutputnya adalah daftar yang dipisahkan koma sebagai berikut:
Untuk menerima hasil sebagai data XML tetapi hanya dua bidang keluaran dan model, jalankan kueri berikut:
curl http://localhost:8983/solr/cars/query?q=*:*\&fl=membuat,model\&wt=xmlOutputnya berbeda dan berisi header respons dan respons aktual:
Wget hanya mencetak data yang diterima di stdout. Ini memungkinkan Anda untuk memroses respons menggunakan alat baris perintah standar. Untuk beberapa daftar, ini berisi jq [9] untuk JSON, xsltproc, xidel, xmlstarlet [10] untuk XML serta csvkit [11] untuk format CSV.
Kesimpulan
Artikel ini menunjukkan berbagai cara mengirim kueri ke Apache Solr dan menjelaskan cara memproses hasil pencarian. Di bagian selanjutnya, Anda akan mempelajari cara menggunakan Apache Solr untuk mencari di PostgreSQL, sistem manajemen basis data relasional.
Tentang Penulis
Jacqui Kabeta adalah seorang pencinta lingkungan, peneliti, pelatih, dan mentor. Di beberapa negara Afrika, ia telah bekerja di industri TI dan lingkungan LSM.
Frank Hofmann adalah pengembang, pelatih, dan penulis TI dan lebih suka bekerja dari Berlin, Jenewa, dan Cape Town. Rekan penulis Buku Manajemen Paket Debian tersedia dari dpmb.organisasi
Tautan dan Referensi
- [1] Apache Solr, https://lucene.apache.org/solr/
- [2] Frank Hofmann dan Jacqui Kabeta: Pengantar Apache Solr. Bagian 1, http://linuxhint.com
- [3] Yonik Seelay: Sintaks Kueri Solr, http://yonik.com/solr/query-syntax/
- [4] Yonik Seelay: Tutorial Solr, http://yonik.com/solr-tutorial/
- [5] Apache Solr: Query Data, Tutorialspoint, https://www.titik tutorial.com/apache_solr/apache_solr_querying_data.htm
- [6] Lucene, https://lucene.apache.organisasi/
- [7] SolrJ, https://lucene.apache.org/solr/guide/8_8/using-solrj.html
- [8] ikal, https://curl.se/
- [9] jq, https://github.com/stedolan/jq
- [10] xmlstarlet, http://xmlstar.sourceforge.bersih/
- [11] csvkit, https://csvkit.baca thedocs.io/en/terbaru/