Laravel Scout: Indexing Menggunakan Algolia Driver

Laravel Scout: Indexing Menggunakan Algolia Driver

Jika dahulu kita mengenal query LIKE untuk melakukan filtering data berdasarkan kata kunci yang dibutuhkan, maka seiring perembangan telah bermunculan metode lainnya dalam melakukan pencarian records ke dalam database. Sebut saja salah satunya fitur Full Search Text yang merupakan sebuah metode untuk mencari data secara full text ke dalam database (wikipedia), atau dengan kata lain, tidak hanya mengacu pada satu parameter saja tapi akan menelusuri semua data yang terkait.

Dalam sebuah tulisan saya sebelumnya, Cara Menggunakan TNTSearch Driver Menggunakan Laravel Scout ada yang bertanya, apa bedanya dengan Algolia Driver? Sejauh yang saya pahami, Algolia Driver adalah sebuah layanan untuk melakukan indexing data yang dimiliki oleh pihak ketiga: algolia.com. Sedangkan TNTSearch melakukan metode yang berbeda, yakni data yang index dikonversi ke dalam bentuk file yang kemudian disimpan ke dalam local storage tanpa melibatkan pihak ketiga.

Lalu, mana yang lebih baik? Untuk menjawab pertanyaan ini, kembali lagi pada kebutuhan penggunanya. Sedikit informasi, meskipun Algolia memberikan layanan free (Baca: dengan ketentuan dan limit tentunya) juga tersedia versi enterprise yang tentunya akan mendapatkan perhatian khusus beserta layanan plus plus-nya.

Baca Juga: Cara Menggunakan TNTSearch Driver Menggunakan Laravel Scout

Install Laravel Scout & Algolia

Laravel scout adalah sebuah package untuk mengelola driver yang digunakan dalam menambahkan full-text search ke dalam Eloquent models. Untuk meng-install-nya melalui command:

composer require laravel/scout

Agar dapat melakukan konfigurasi saat menggunakan Scout, publish config-nya menggunakan vendor:publish, perintah tersebut akan membuat file scout.php yang akan diletakkan ke dalam direktori config.

php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

Karena driver yang akan digunakan adalah Algolia, maka langkah selanjutnya adalah dengan meng-install package yang akan akan digunakan untuk berinteraksi dengan driver pihak ketiga yakni Algolia.com . Untuk meng-install-nya gunakan command:

composer require algolia/algoliasearch-client-php

Using Algolia with Scout

Tiba saatnya untuk menggunakan Algolia dalam mencari/mem-filter data ke dalam database berdasarkan parameter yang diinginkan kemudian menampilkan data yang terkait. Sebelumnya, lakukan konfigurasi terlebih dahulu, buka file .env kemudian tambahkan baris berikut:

SCOUT_DRIVER=algolia
ALGOLIA_APP_ID=ALGOLIA APP ID ANDA
ALGOLIA_SECRET=SECRET KEY ANDA

Untuk mendapatkan key yang dibutuhkan di atas, kamu dapat menemukannya pada client area Algolia, yang berada pada menu Api Keys. Buka model yang akan di index oleh Algolia, sebagai contoh, pada artikel kali ini yang akan digunakan adalah model Post.

Pada top section tambahkan use statement:

...
use Laravel\Scout\Searchable;
...

Kemudian di dalam class Post, tambahkan baris berikut:

...
use Searchable;
​
public function searchableAs()
{
   return 'posts_index';
}
...

Sampai pada tahap ini, semua yang dibutuhkan telah tersedia. Sehingga, apabila kamu melakukan perubahan data (baca: Input, Update, or Delete), maka secara otomatis Algolia akan melakukan indexing data yang mengalami perubahan. Misalnya saja insert data:

$post = new App\Post;
$post->title = "Laravel Scount: Indexing Menggunakan Algolia Driver";
$post->save();

Sebagai catatan, Algolia tidak mendukung penggunaan mass assigment. So, apabila kamu terbiasa menggunakan mass assigment, maka kamu dapat menggunakan method ->searchable(); sebagai penutup. Misalnya:

$post = App\Post::create([
    'title' => 'Laravel Scount: Indexing Menggunakan Algolia Driver'
]);
$post->searchable();

Data yang di-index oleh Algolia akan disimpan pada halaman Indicies atau kamu juga dapat melihatnya pada halaman dashboard.

Searching Data Using Scout

Tinggalkan cara lama dengan menggunakan query like, sebab method yang banyak digunakan saat ini adalah full-search text. So, untuk menggunakannya dapat dilakukan dengan method search(). Melanjutkan contoh sebelumnya, masih menggunakan model Post, untuk mencari data yang terkait maka kamu dapat melakukan pendekatan berikut:

$q = $request->q;
$post = App\Post::search($q)->get();

Tidak hanya sebatas itu, kamu dapat meng-explore pendekatan yang biasanya yang kamu lakukan. Misalnya saja:

//where
$post = App\Post::search($q)->where('status', 1)->get();
​
//raw
$post = App\Post::search($q)->raw();
​
//paginate
$post = App\Post::search($q)->paginate(10);

Baca Juga: Upload File di Laravel 5

Kesimpulan

Dengan menggunakan Laravel scout, kita diberikan pilihan untuk dalam menentukan driver yang akan digunakan. Namun satu hal yang pasti dengan melakukan indexing data, kamu dapat mempercepat proses pencarian data dan menampilkan data yang relevan. Method search() dapat dikombinasikan dengan berbagai macam pendekatan yang dimiliki oleh Eloquent untuk mengakses data. So, Akan sejauh mana yang dapat kamu explore?

Category:
Share:

Comments