Typesense adalah mesin pencari yang cepat dan toleran terhadap kesalahan ketik untuk menciptakan pengalaman pencarian yang menyenangkan.
Alternatif Algolia Sumber Terbuka &
Alternatif ElasticSearch yang Lebih Mudah Digunakan
Situs web | Dokumentasi | Peta Jalan | Komunitas Kendur | Utas Komunitas | Twitter
Berikut adalah beberapa demo langsung yang menunjukkan aksi Typesense pada kumpulan data besar:
? Jika Anda lebih suka menonton video:
Tidak melihat fitur di daftar ini? Telusuri pelacak masalah kami jika seseorang sudah memintanya dan tambahkan komentar yang menjelaskan kasus penggunaan Anda, atau buka terbitan baru jika belum. Kami memprioritaskan peta jalan kami berdasarkan masukan pengguna, jadi kami ingin mendengar pendapat Anda.
Berikut peta jalan publik Typesense: https://typesense.link/roadmap.
Kolom pertama juga menjelaskan cara kami memprioritaskan fitur, bagaimana Anda dapat memengaruhi prioritas, dan irama rilis kami.
Kami ingin melakukan tolok ukur dengan kumpulan data yang lebih besar, jika kami dapat menemukan kumpulan data berukuran besar di domain publik. Jika Anda memiliki saran untuk kumpulan data terstruktur yang terbuka, beri tahu kami dengan membuka terbitan. Kami juga akan senang jika Anda dapat berbagi tolok ukur dari kumpulan data Anda yang besar. Silakan kirimkan PR kepada kami!
Typesense digunakan oleh berbagai pengguna di berbagai domain dan vertikal.
Di Typesense Cloud kami melayani lebih dari 10 MILYAR pencarian per bulan. Gambar Docker Typesense telah diunduh lebih dari 12 juta kali.
Kami baru-baru ini mulai mendokumentasikan siapa yang menggunakannya di Etalase kami. Jika Anda ingin dimasukkan dalam daftar, silakan mengedit SHOWCASE.md dan kirimkan PR kepada kami.
Anda juga akan melihat daftar logo pengguna di halaman beranda Typesense Cloud.
Opsi 1: Anda dapat mengunduh paket biner yang kami terbitkan untuk Linux (x86_64 & arm64) dan Mac (x86_64).
Opsi 2: Anda juga dapat menjalankan Typesense dari image Docker resmi kami.
Opsi 3: Jalankan cluster terkelola dengan Typesense Cloud:
Berikut adalah contoh singkat yang menunjukkan bagaimana Anda dapat membuat koleksi, mengindeks dokumen, dan mencarinya di Typesense.
Mari kita mulai dengan memulai server Typesense melalui Docker:
docker run -p 8108:8108 -v/tmp/data:/data typesense/typesense:27.1 --data-dir /data --api-key=Hu52dwsas2AdxdE
Kami memiliki Klien API dalam beberapa bahasa, tapi mari kita gunakan klien Python untuk contoh ini.
Instal klien Python untuk Typesense:
pip install typesense
Sekarang kita dapat menginisialisasi klien dan membuat koleksi companies
:
import typesense
client = typesense . Client ({
'api_key' : 'Hu52dwsas2AdxdE' ,
'nodes' : [{
'host' : 'localhost' ,
'port' : '8108' ,
'protocol' : 'http'
}],
'connection_timeout_seconds' : 2
})
create_response = client . collections . create ({
"name" : "companies" ,
"fields" : [
{ "name" : "company_name" , "type" : "string" },
{ "name" : "num_employees" , "type" : "int32" },
{ "name" : "country" , "type" : "string" , "facet" : True }
],
"default_sorting_field" : "num_employees"
})
Sekarang, mari tambahkan dokumen ke koleksi yang baru saja kita buat:
document = {
"id" : "124" ,
"company_name" : "Stark Industries" ,
"num_employees" : 5215 ,
"country" : "USA"
}
client . collections [ 'companies' ]. documents . create ( document )
Terakhir, mari kita cari dokumen yang baru saja kita indeks:
search_parameters = {
'q' : 'stork' ,
'query_by' : 'company_name' ,
'filter_by' : 'num_employees:>100' ,
'sort_by' : 'num_employees:desc'
}
client . collections [ 'companies' ]. documents . search ( search_parameters )
Apakah Anda memperhatikan kesalahan ketik pada teks kueri? Bukan masalah besar. Typesense menangani kesalahan ketik secara langsung!
Panduan langkah demi langkah tersedia di situs web kami di sini.
Ini akan memandu Anda melalui proses memulai server Typesense, mengindeks data di dalamnya, dan menanyakan kumpulan data.
Berikut dokumentasi API resmi kami, tersedia di situs web kami: https://typesense.org/api.
Jika Anda melihat ada masalah dengan dokumentasi atau panduannya, harap beri tahu kami atau kirimkan PR kepada kami di sini: https://github.com/typesense/typesense-website.
Meskipun Anda pasti dapat menggunakan CURL untuk berinteraksi dengan Server Typesense secara langsung, kami menawarkan klien API resmi untuk menyederhanakan penggunaan Typesense dari bahasa pilihan Anda. Klien API dilengkapi dengan strategi percobaan ulang yang cerdas untuk memastikan bahwa panggilan API yang dilakukan melalui klien tersebut tangguh, terutama dalam pengaturan HA.
Jika kami tidak menawarkan klien API dalam bahasa Anda, Anda masih dapat menggunakan perpustakaan klien HTTP populer untuk mengakses API Typesense secara langsung.
Berikut adalah beberapa klien dan integrasi kontribusi komunitas:
Kami menyambut kontribusi komunitas untuk menambahkan lebih banyak perpustakaan klien resmi dan integrasi. Silakan hubungi kami di [email protected] atau buka terbitan di GitHub untuk berkolaborasi dengan kami dalam arsitektur.
Kami juga memiliki integrasi kerangka kerja berikut:
Kami memiliki Koleksi Tukang Pos yang dikelola komunitas di sini: https://github.com/typesense/postman.
Tukang pos adalah aplikasi yang memungkinkan Anda melakukan permintaan HTTP dengan menunjuk dan mengklik, tanpa harus mengetikkannya di terminal. Koleksi Tukang Pos di atas memberi Anda permintaan templat yang dapat Anda impor ke Tukang Pos, untuk membuat panggilan API ke Typesense dengan cepat.
Anda dapat menggunakan adaptor InstantSearch.js kami untuk dengan cepat membangun pengalaman pencarian yang canggih, lengkap dengan pemfilteran, pengurutan, penomoran halaman, dan banyak lagi.
Begini caranya: https://typesense.org/docs/guide/search-ui-components.html
Elasticsearch adalah perangkat lunak berukuran besar, yang membutuhkan banyak upaya untuk menyiapkan, mengelola, menskalakan, dan menyempurnakannya. Ini menawarkan Anda beberapa ribu parameter konfigurasi untuk mencapai konfigurasi ideal Anda. Jadi ini lebih cocok untuk tim besar yang memiliki bandwidth untuk menyiapkannya untuk produksi, memantaunya secara rutin, dan menskalakannya, terutama ketika mereka memiliki kebutuhan untuk menyimpan miliaran dokumen dan data berukuran petabyte (misalnya: log).
Typesense dibuat khusus untuk mengurangi "waktu pemasaran" demi pengalaman pencarian yang menyenangkan. Ini adalah alternatif yang ringan namun kuat & terukur yang berfokus pada Kebahagiaan dan Pengalaman Pengembang dengan API bersih yang terdokumentasi dengan baik, semantik yang jelas, dan default yang cerdas sehingga dapat berfungsi dengan baik, tanpa Anda harus memutar banyak tombol .
Elasticsearch juga berjalan di JVM, yang dengan sendirinya dapat menjadi upaya penyesuaian agar dapat berjalan secara optimal. Typesense, di sisi lain, adalah biner asli mandiri yang ringan, sehingga mudah diatur dan dioperasikan.
Lihat perbandingan fitur berdampingan di sini.
Algolia adalah produk pencarian sebagai layanan yang dihosting dan berpemilik yang bekerja dengan baik, ketika biaya tidak menjadi masalah. Berdasarkan pengalaman kami, situs dan aplikasi yang berkembang pesat dengan cepat mencapai batas penelusuran & pengindeksan, disertai dengan peningkatan versi paket yang mahal seiring dengan skalanya.
Typesense di sisi lain adalah produk sumber terbuka yang dapat Anda jalankan di infrastruktur Anda sendiri atau menggunakan penawaran SaaS terkelola kami - Typesense Cloud. Versi open source gratis untuk digunakan (selain tentu saja biaya infra Anda sendiri). Dengan Typesense Cloud kami tidak mengenakan biaya berdasarkan catatan atau operasi pencarian. Sebaliknya, Anda mendapatkan cluster khusus dan Anda dapat membuang data dan lalu lintas sebanyak yang dapat ditanganinya. Anda hanya membayar biaya tetap per jam & biaya bandwidth untuk itu, tergantung pada konfigurasi yang Anda pilih, mirip dengan kebanyakan platform cloud modern.
Dari perspektif produk, Typesense lebih mirip dengan Algolia daripada Elasticsearch. Namun, kami telah mengatasi beberapa keterbatasan penting dengan Algolia:
Algolia memerlukan indeks terpisah untuk setiap urutan, yang diperhitungkan dalam batas paket Anda. Sebagian besar pengaturan indeks seperti bidang untuk dicari, bidang untuk faset, bidang untuk dikelompokkan berdasarkan, pengaturan peringkat, dll ditentukan di awal saat indeks dibuat vs kemampuan untuk mengaturnya dengan cepat pada waktu kueri.
Dengan Typesense, pengaturan ini dapat dikonfigurasi pada waktu pencarian melalui parameter kueri yang membuatnya sangat fleksibel dan membuka kasus penggunaan baru. Typesense juga dapat memberi Anda hasil yang diurutkan dengan satu indeks, dibandingkan harus membuat banyak indeks. Ini membantu mengurangi konsumsi memori.
Algolia menawarkan fitur-fitur berikut yang saat ini tidak dimiliki Typesense: personalisasi & analisis pencarian berbasis server. Untuk analitik, Anda masih dapat melengkapi penelusuran Anda di sisi klien dan mengirimkan metrik penelusuran ke alat analisis web pilihan Anda.
Kami bermaksud untuk menjembatani kesenjangan ini di Typesense, namun sementara itu, harap beri tahu kami jika ada di antara hal ini yang menghalangi kasus penggunaan Anda dengan membuat permintaan fitur di pelacak masalah kami.
Lihat perbandingan fitur berdampingan di sini.
Server Typesense baru akan menggunakan sekitar 30 MB memori. Saat Anda mulai mengindeks dokumen, penggunaan memori juga akan meningkat. Besarnya peningkatan bergantung pada jumlah dan jenis bidang yang Anda indeks.
Kami telah berupaya untuk menjaga struktur data dalam memori tetap ramping. Sebagai gambaran kasar: ketika 1 juta judul Hacker News diindeks beserta poinnya, Typesense menggunakan 165 MB memori. Ukuran data yang sama pada disk dalam format JSON adalah 88 MB. Jika Anda memiliki nomor dari kumpulan data Anda yang dapat kami tambahkan ke bagian ini, kirimkan PR kepada kami!
Dari pengalaman kami, perusahaan umumnya khawatir jika perpustakaan yang mereka gunakan berlisensi GPL, karena kode perpustakaan langsung diintegrasikan ke dalam kode mereka dan akan menghasilkan karya turunan dan memicu kepatuhan GPL. Namun, Typesense Server adalah perangkat lunak server dan kami mengharapkan pengguna menjalankannya sebagai daemon terpisah, dan tidak mengintegrasikannya dengan kode mereka sendiri. GPL mencakup dan mengizinkan kasus penggunaan ini dengan baik (misalnya: Linux berlisensi GPL) . Nah, AGPL inilah yang membuat perangkat lunak server yang diakses melalui jaringan menghasilkan karya turunan dan bukan GPL. Dan karena alasan itu kami memilih untuk tidak menggunakan AGPL untuk Typesense.
Nah, jika seseorang melakukan modifikasi pada server Typesense, GPL sebenarnya mengizinkan Anda untuk tetap menyimpan modifikasi tersebut untuk diri Anda sendiri selama Anda tidak mendistribusikan kode yang dimodifikasi tersebut. Jadi, misalnya, perusahaan dapat memodifikasi server Typesense dan menjalankan kode yang dimodifikasi secara internal dan tetap tidak harus membuka sumber modifikasinya, selama mereka membuat kode yang dimodifikasi tersedia untuk semua orang yang memiliki akses ke perangkat lunak yang dimodifikasi.
Sekarang, jika seseorang membuat modifikasi pada server Typesense dan mendistribusikan modifikasi tersebut, di situlah GPL berperan. Mengingat bahwa kami telah mempublikasikan karya kami kepada komunitas, kami ingin agar modifikasi orang lain juga dibuat terbuka untuk komunitas di komunitas. semangat sumber terbuka. Kami menggunakan GPL untuk tujuan ini. Lisensi lain akan memungkinkan karya open source kami untuk dimodifikasi, dijadikan sumber tertutup, dan didistribusikan, yang ingin kami hindari dengan Typesense demi keberlanjutan proyek dalam jangka panjang.
Berikut latar belakang lebih lanjut mengapa GPL, seperti yang dijelaskan oleh Discourse: https://meta.discourse.org/t/why-gnu-license/2531. Banyak poin yang disebutkan di sana selaras dengan kami.
Sekarang, semua hal di atas hanya berlaku untuk Server Typesense. Perpustakaan klien kami memang dimaksudkan untuk diintegrasikan ke dalam kode pengguna kami sehingga mereka menggunakan lisensi Apache.
Singkatnya, AGPL biasanya menjadi masalah bagi perangkat lunak server dan kami memilih untuk tidak menggunakannya. Kami percaya GPL untuk Typesense Server menangkap esensi dari apa yang kami inginkan untuk proyek sumber terbuka ini. GPL memiliki sejarah panjang dalam keberhasilannya digunakan oleh proyek-proyek open source yang populer. Perpustakaan kami masih berlisensi Apache.
Jika Anda memiliki hal spesifik yang menghalangi Anda menggunakan Typesense karena masalah lisensi, kami dengan senang hati akan mengeksplorasi topik ini lebih jauh bersama Anda. Silakan hubungi kami.
Jika Anda memiliki pertanyaan umum tentang Typesense, ingin menyapa atau sekadar mengikuti, kami ingin mengundang Anda untuk bergabung dengan Komunitas Slack publik kami.
Jika Anda mengalami masalah atau masalah apa pun, buatlah masalah GitHub dan kami akan berusaha sebaik mungkin untuk membantu.
Kami berusaha memberikan dukungan yang baik melalui pelacak masalah kami di GitHub. Namun, jika Anda ingin menerima dukungan pribadi & prioritas dengan:
Kami menawarkan opsi Dukungan Berbayar yang dijelaskan di sini.
Kami adalah tim ramping yang mempunyai misi untuk mendemokratisasi penelusuran dan kami akan mengambil semua bantuan yang kami bisa! Jika Anda ingin terlibat, berikut informasi di mana kami dapat menggunakan bantuan Anda: Contributing.md
Jika Anda ingin mendapatkan pembaruan saat kami merilis versi baru, klik tombol "Tonton" di bagian atas dan pilih "Hanya rilis". GitHub kemudian akan mengirimi Anda pemberitahuan bersama dengan log perubahan pada setiap rilis baru.
Kami juga memposting pembaruan ke akun Twitter kami tentang rilis dan topik tambahan terkait Typesense. Ikuti kami di sini: @typesense.
Kami juga akan memposting pembaruan di Komunitas Slack kami.
Kami menggunakan Bazel untuk membangun Typesense.
Typesense memerlukan dependensi berikut:
Silakan lihat langkah-langkah pembuatan CI untuk mengetahui kumpulan dependensi terbaru.
Setelah Anda menginstalnya, jalankan perintah berikut dari root repo:
bazel build //:typesense-server
Pembangunan pertama akan memakan waktu beberapa saat karena perpustakaan pihak ketiga lainnya ditarik dan dibangun sebagai bagian dari proses pembangunan.
© 2016-sekarang Typesense Inc.