Apa itu Apache Solr

Solr alias “Solar”, secara singkatnya adalah aplikasi yang membantu kita untuk membuat search engine sendiri. Penjelasan lebih detail bisa anda dapatkan di Solr Tutorial.

Apa yang diperlukan untuk indexing MySQL ke Solr?

Untuk bisa mengindeks data dari MySQL atau DBMS lainnya, kita bisa menggunakan Data Import Handler.

Bagaimana melakukannya?

Persiapan Environment
  1. Download Java
  2. Download Apache Solr
  3. Download MySQL JDBC
  4. Siapkan sebuah tabel dalam MySQL. Dalam contoh ini saya mempunyai nama tabel : produk pada host : localhost
Langkah-langkah
  1. Pastikan sudah terinstall Java dan sudah dimasukkan ke PATH
  2. Ekstrak Solr ke salah satu direktori sesuai kehendak anda
  3. Ekstrak MySQL JDBC, pilih file mysql-connector-java.bin.jar di dalamnya kemudian copy ke solr/dist/
  4. Buat core di dalam Solr, kalau bingung bisa lihat di sini
  5. Buka file solr/server/solr/(nama core)/conf/solrconfig.xml lalu tambahkan code berikut:

     <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
     <lib dir="${solr.install.dir:../../../..}/dist/" regex="mysql-connector-java-.*\.jar" />
    
     <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
         <lst name="defaults">
             <str name="config">data-config.xml</str>
         </lst>
     </requestHandler> 
    

    Code diatas adalah konfigurasi untuk melakukan koneksi ke MySQL menggunakan DataImportHandler, disana juga dijelaskan bahwa file konektornya adalah file dengan nama data-config.xml.

  6. Buat sebuah file dengan nama data-config.xml di foler conf/ pada core, lalu isikan code berikut:

     <dataConfig>
     <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/produk" user="root" password="rahasia"/>
     <document>
         <entity name="foodproducts" query="SELECT id, fCode, fName, fManufacture FROM foodproducts">
             <field column="id" name="id" />
             <field column="fCode" name="food_code" />
             <field column="fName" name="food_name" />
             <field column="fManufacture" name="food_man" />
         </entity>
     </document>
     </dataConfig>
    

    Code diatas berisi url mysql beserta username dan passwordnya. Tag entity berarti satu buah entitas yang di-indeks ke dalam Solr. Dalam entity “foodproducts” tersebut terdapat 4 field yang akan dimasukkan ke indeks Solr.

  7. Setelah itu jalankan server Solr dengan command bin/solr start -p 8983

    Dashboard Solr
  8. Masukkan 4 field (id, food_code, food_name dan food_man) ke dalam schema pada core.

    Lakukan dengan memilih menu Schema kemudian Add Field untuk keempat field tersebut. Nama field disesuaikan dengan field name pada file data-config.xml (langkah ke-6).

    Solr Schema
  9. Lakukan import data dari MySQL dengan pilih menu Data Import

    Solr DIH

    Jika berhasil akan muncul pemberitahuan:

    Data Import Success

Berhasil! :)