Apache Solr

Pengenalan kepada Apache Solr. Bahagian 2 Meminta Solr

Pengenalan kepada Apache Solr. Bahagian 2 Meminta Solr
Apache Solr [1] adalah kerangka mesin carian yang ditulis di Java dan berdasarkan perpustakaan carian Lucene [6]. Dalam artikel sebelumnya, kami menyiapkan Apache Solr pada Debian GNU / Linux 11 yang akan segera dirilis, memulai satu inti data, memuat naik data contoh, dan menunjukkan bagaimana melakukan pencarian dasar dalam kumpulan data dengan menggunakan yang sederhana pertanyaan.

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:

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.

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 = csv

Keluarannya 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 = xml

Keluarannya 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

Permainan Terbaik untuk Dimainkan dengan Penjejakan Tangan
Oculus Quest baru-baru ini memperkenalkan idea hebat penjejakan tangan tanpa pengawal. Dengan jumlah permainan dan aktiviti yang semakin meningkat yan...
Cara Menunjukkan Overlay OSD dalam Aplikasi dan Permainan Linux Skrin Penuh
Bermain permainan skrin penuh atau menggunakan aplikasi dalam mod skrin penuh bebas gangguan dapat memisahkan anda dari maklumat sistem yang relevan y...
5 Kad Tangkap Permainan Teratas
Kita semua telah melihat dan menyukai streaming permainan permainan di YouTube. PewDiePie, Jakesepticye, dan Markiplier hanyalah beberapa pemain terat...