Selain menjawab pertanyaan OP, Izinkan saya memberikan wawasan tentang Apache Solr dari pengantar sederhana hingga instalasi dan implementasi terperinci .
Pengantar sederhana
Siapa pun yang memiliki pengalaman dengan mesin pencari di atas, atau mesin lain yang tidak ada dalam daftar - Saya akan senang mendengar pendapat Anda.
Solr seharusnya tidak digunakan untuk memecahkan masalah real-time. Untuk mesin pencari, Solr cukup banyak permainan dan bekerja dengan sempurna .
Solr berfungsi dengan baik di aplikasi web Lalu Lintas Tinggi ( saya membaca bahwa itu tidak cocok untuk ini, tapi saya mendukung pernyataan itu ). Ini menggunakan RAM, bukan CPU.
- relevansi dan peringkat hasil
The dorongan membantu Anda peringkat hasil Anda muncul di atas. Katakanlah, Anda mencoba untuk mencari nama john di bidang firstname dan lastname , dan Anda ingin memberikan relevansi ke firstname lapangan, maka Anda perlu untuk meningkatkan atas firstname lapangan seperti yang ditunjukkan.
http://localhost:8983/solr/collection1/select?q=firstname:john^2&lastname:john
Seperti yang Anda lihat, bidang nama depan dinaikkan dengan skor 2.
Lebih lanjut tentang SolrRelevancy
- kecepatan pencarian dan pengindeksan
Kecepatannya luar biasa cepat dan tidak ada kompromi untuk itu. Alasan saya pindah ke Solr .
Mengenai kecepatan pengindeksan, Solr juga dapat menangani GABUNGAN dari tabel database Anda. GABUNG yang lebih tinggi dan kompleks memang memengaruhi kecepatan pengindeksan. Namun, konfigurasi RAM yang sangat besar dapat dengan mudah mengatasi situasi ini.
Semakin tinggi RAM, semakin cepat kecepatan pengindeksan Solr.
- kemudahan penggunaan dan kemudahan integrasi dengan Django
Tidak pernah mencoba mengintegrasikan Solr dan Django , namun Anda dapat melakukannya dengan Haystack . Saya menemukan beberapa artikel menarik tentang hal yang sama dan inilah github untuknya.
- persyaratan sumber daya - situs akan di-host pada VPS, jadi idealnya mesin pencari tidak memerlukan banyak RAM dan CPU
Solr berkembang biak di RAM, jadi jika RAM tinggi, Anda tidak perlu khawatir tentang Solr .
Penggunaan RAM Solr meningkat pada pengindeksan penuh jika Anda memiliki beberapa miliar catatan, Anda dapat dengan cerdas memanfaatkan impor Delta untuk mengatasi situasi ini. Sebagaimana dijelaskan, Solr hanya merupakan solusi waktu dekat yang dekat .
Solr sangat scalable. Lihat SolrCloud . Beberapa fitur utama darinya.
- Pecahan (atau pecahan adalah konsep mendistribusikan indeks di antara banyak mesin, katakan jika indeks Anda telah tumbuh terlalu besar)
- Load Balancing (jika Solrj digunakan dengan Solr cloud secara otomatis menangani load-balancing menggunakan mekanisme Round-Robin)
- Pencarian Terdistribusi
- Ketersediaan Tinggi
- fitur tambahan seperti "maksud Anda?", pencarian terkait, dll
Untuk skenario di atas, Anda bisa menggunakan SpellCheckComponent yang dipaket dengan Solr . Ada banyak fitur lain, The SnowballPorterFilterFactory membantu untuk mengambil catatan mengatakan jika Anda mengetik, buku , bukan buku , Anda akan disajikan dengan hasil yang berkaitan dengan buku .
Jawaban ini secara luas berfokus pada Apache Solr & MySQL . Django berada di luar jangkauan.
Dengan asumsi bahwa Anda berada di bawah lingkungan LINUX, Anda dapat melanjutkan ke artikel ini lebih lanjut. (milik saya adalah versi Ubuntu 14.04)
Instalasi Lengkap
Mulai
Unduh Apache Solr dari sini . Itu akan menjadi versi 4.8.1 . Anda dapat mengunduh versi baru, saya menemukan ini stabil.
Setelah mengunduh arsip, ekstrak ke folder pilihan Anda. Katakan .. Downloads
atau apa pun .. Jadi akan terlihat sepertiDownloads/solr-4.8.1/
Saat diminta .. Arahkan ke dalam direktori
shankar@shankar-lenovo: cd Downloads/solr-4.8.1
Jadi sekarang kamu di sini ..
shankar@shankar-lenovo: ~/Downloads/solr-4.8.1$
Mulai Server Aplikasi Jetty
Jetty tersedia di dalam folder contoh solr-4.8.1
direktori, jadi navigasi di dalamnya dan mulai Jetty Application Server.
shankar@shankar-lenovo:~/Downloads/solr-4.8.1/example$ java -jar start.jar
Sekarang, jangan tutup terminal, kecilkan dan biarkan di samping.
(TIP: Gunakan & setelah start.jar untuk membuat Jetty Server berjalan di latar belakang)
Untuk memeriksa apakah Apache Solr berjalan dengan sukses, kunjungi URL ini di browser. http: // localhost: 8983 / solr
Menjalankan Jetty di Port khusus
Ini berjalan pada port 8983 sebagai default. Anda dapat mengubah porta di sini atau langsung di dalam jetty.xml
file.
java -Djetty.port=9091 -jar start.jar
Unduh JConnector
File JAR ini bertindak sebagai jembatan antara MySQL dan JDBC, Unduh Platform Independent Version di sini
Setelah mengunduhnya, ekstrak folder dan salin mysql-connector-java-5.1.31-bin.jar
dan tempel ke direktori lib .
shankar@shankar-lenovo:~/Downloads/solr-4.8.1/contrib/dataimporthandler/lib
Membuat tabel MySQL untuk ditautkan ke Apache Solr
Untuk menggunakan Solr , Anda harus memiliki beberapa tabel dan data untuk dicari. Untuk itu, kita akan menggunakan MySQL untuk membuat tabel dan mendorong beberapa nama acak dan kemudian kita bisa menggunakan Solr untuk terhubung ke MySQL dan mengindeks tabel itu dan entri itu.
1. Struktur Tabel
CREATE TABLE test_solr_mysql
(
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NULL,
created TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
2.Populasikan tabel di atas
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jean');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jack');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jason');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Vego');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Grunt');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jasper');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Fred');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Jenna');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Rebecca');
INSERT INTO `test_solr_mysql` (`name`) VALUES ('Roland');
Masuk ke dalam inti dan menambahkan arahan lib
1.Navigasi ke
shankar@shankar-lenovo: ~/Downloads/solr-4.8.1/example/solr/collection1/conf
2.Memodifikasi solrconfig.xml
Tambahkan dua arahan ini ke file ini ..
<lib dir="../../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-dataimporthandler-\d.*\.jar" />
Sekarang tambahkan DIH (Pengimpor Impor Data)
<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler" >
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
3.Buat file db-data-config.xml
Jika file ada maka abaikan, tambahkan baris ini ke file itu. Seperti yang Anda lihat pada baris pertama, Anda perlu memberikan kredensial dari database MySQL Anda . Nama Database, nama pengguna, dan kata sandi.
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/yourdbname" user="dbuser" password="dbpass"/>
<document>
<entity name="test_solr" query="select CONCAT('test_solr-',id) as rid,name from test_solr_mysql WHERE '${dataimporter.request.clean}' != 'false'
OR `created` > '${dataimporter.last_index_time}'" >
<field name="id" column="rid" />
<field name="solr_name" column="name" />
</entity>
</document>
</dataConfig>
(TIP: Anda dapat memiliki sejumlah entitas tapi hati-hati dengan bidang id, jika mereka sama maka pengindeksan akan dilewati.)
4.Modifikasi file schema.xml
Tambahkan ini ke schema.xml Anda seperti yang ditunjukkan ..
<uniqueKey>id</uniqueKey>
<field name="solr_name" type="string" indexed="true" stored="true" />
Penerapan
Pengindeksan
Di sinilah real dealnya. Anda perlu melakukan pengindeksan data dari MySQL ke Solr inorder untuk menggunakan Solr Queries.
Langkah 1: Buka Panel Admin Solr
Memukul URL http: // localhost: 8983 / solr pada browser Anda. Layar terbuka seperti ini.
Seperti yang ditunjukkan penanda, buka Log inorder untuk memeriksa apakah ada konfigurasi di atas yang menyebabkan kesalahan.
Langkah 2: Periksa Log Anda
Ok jadi sekarang Anda di sini, Karena Anda bisa ada banyak pesan kuning (PERINGATAN). Pastikan Anda tidak memiliki pesan kesalahan yang ditandai dengan warna merah. Sebelumnya, pada konfigurasi kami, kami telah menambahkan permintaan pilih pada db-data-config.xml kami , katakan jika ada kesalahan pada permintaan itu, itu akan ditampilkan di sini.
Baik, tidak ada kesalahan. Kami baik untuk pergi. Mari kita pilih collection1 dari daftar seperti yang digambarkan dan pilih Impor Data
Langkah 3: DIH (Penangan Impor Data)
Menggunakan DIH, Anda akan terhubung ke MySQL dari Solr melalui file konfigurasi db-data-config.xml dari antarmuka Solr dan mengambil 10 catatan dari database yang akan diindeks ke Solr .
Untuk melakukan itu, Pilih impor penuh , dan periksa opsi Bersihkan dan Komit . Sekarang klik Jalankan seperti yang ditunjukkan.
Atau, Anda juga dapat menggunakan kueri impor penuh langsung seperti ini ..
http://localhost:8983/solr/collection1/dataimport?command=full-import&commit=true
Setelah Anda mengklik Jalankan , Solr mulai mengindeks catatan, jika ada kesalahan, itu akan mengatakan Pengindeksan Gagal dan Anda harus kembali ke bagian Logging untuk melihat apa yang salah.
Dengan asumsi tidak ada kesalahan dengan konfigurasi ini dan jika pengindeksan berhasil diselesaikan., Anda akan mendapatkan pemberitahuan ini.
Langkah 4: Menjalankan Solr Queries
Sepertinya semuanya berjalan dengan baik, sekarang Anda bisa menggunakan Solr Queries untuk meminta data yang diindeks. Klik Query di sebelah kiri dan kemudian tekan tombol Execute di bagian bawah.
Anda akan melihat catatan yang diindeks seperti yang ditunjukkan.
Permintaan Solr yang sesuai untuk daftar semua catatan adalah
http://localhost:8983/solr/collection1/select?q=*:*&wt=json&indent=true
Nah, ada semua 10 catatan yang diindeks. Katakanlah, kita hanya perlu nama yang dimulai dengan Ja , dalam hal ini, Anda perlu menargetkan nama kolom solr_name
, Oleh karena itu permintaan Anda seperti ini.
http://localhost:8983/solr/collection1/select?q=solr_name:Ja*&wt=json&indent=true
Begitulah cara Anda menulis Solr Queries. Untuk membaca lebih lanjut tentang itu, Periksa artikel yang indah ini .