Meilisearch: Công cụ tìm kiếm nguồn mở tốc độ cao

Meilisearch là gì? Công cụ tìm kiếm nguồn mở tốc độ cao

Meilisearch là công cụ tìm kiếm toàn văn mã nguồn mở, được viết bằng Rust, thiết kế dành riêng cho developer và non-technical users. Với khả năng trả kết quả chỉ trong 50ms, typo tolerance thông minh và giao diện API đơn giản, Meilisearch đang trở thành lựa chọn phổ biến để thêm chức năng tìm kiếm cho website, ứng dụng và database — khám phá tại GitHub Meilisearch.

Màn hình giao diện Meilisearch dashboard hiển thị kết quả tìm kiếm với tốc độ phản hồi 50ms

Khác với các search engine phức tạp như Elasticsearch yêu cầu cấu hình nhiều, Meilisearch hoạt động theo nguyên tắc “works out of the box” — cài đặt xong là dùng được ngay. Đây là lý do nó phù hợp với startup, indie hacker và các dự án cần search nhanh mà không muốn đầu tư quá nhiều thời gian vận hành.

Tính năng nổi bật

  • Typo tolerance tự động — Gõ sai chính tả vẫn tìm được kết quả đúng
  • Prefix search — Gợi ý kết quả ngay khi gõ từng ký tự
  • Việt hóa tốt — Hỗ trợ tiếng Việt phân tách từ thông minh
  • Synonyms — Định nghĩa từ đồng nghĩa dễ dàng
  • Faceted search — Lọc kết quả theo category, giá, ngày
  • Filter & sort — Sắp xếp và lọc dữ liệu theo nhiều trường
  • Tốc độ 50ms — Kết quả phản hồi gần như tức thì
  • No config phức tạp — Default settings hoạt động tốt

Cài đặt Meilisearch

Cài đặt rất đơn giản, chỉ cần download binary:

curl -L https://install.meilisearch.com | sh
./meilisearch

Hoặc dùng Docker:

docker run -it --rm 
  -p 7700:7700 
  -e MEILI_MASTER_KEY=my_master_key 
  -v $(pwd)/meili_data:/meili_data 
  getmeili/meilisearch:v1.6

Sau đó Meilisearch chạy trên port 7700, sẵn sàng nhận data. Dễ nhất là dùng official quick start guide với dataset mẫu có sẵn.

Đưa data vào Meilisearch

Sử dụng REST API hoặc SDK client. Thêm documents:

curl -X POST 'http://localhost:7700/indexes/products/documents' 
  -H 'Authorization: Bearer my_master_key' 
  -H 'Content-Type: application/json' 
  --data-binary '[
    {
      "id": 1,
      "name": "iPhone 15 Pro",
      "price": 27990000,
      "category": "Điện thoại"
    },
    {
      "id": 2,
      "name": "MacBook Air M3",
      "price": 32990000,
      "category": "Laptop"
    }
  ]'

Index được tạo tự động khi bạn thêm documents. Meilisearch cho phép document có cấu trúc không đồng nhất — mỗi record là một object JSON.

Tìm kiếm cơ bản

curl -X POST 'http://localhost:7700/indexes/products/search' 
  -H 'Authorization: Bearer my_master_key' 
  -H 'Content-Type: application/json' 
  --data-binary '{
    "q": "iphone",
    "limit": 5
  }'

Kết quả trả về dạng JSON với ranked matches. Meilisearch tự động xếp hạng dựa trên độ liên quan, với nhiều thuật toán ranking mặc định.

Sơ đồ kiến trúc triển khai Meilisearch production với database API và web application

So sánh với Elasticsearch

Cả hai đều là search engine mã nguồn mở, nhưng có triết lý khác nhau:

Tiêu chí Meilisearch Elasticsearch
Ngôn ngữ Rust Java
Dễ sử dụng Cao, zero config Phức tạp, cần tuning
Resource usage Nhẹ, ~1GB RAM Nặng, cần nhiều RAM
Tốc độ trả kết quả ~50ms ~100ms+
Typo tolerance Mặc định, thông minh Phải cấu hình
Phù hợp SMB, startup, app vừa Enterprise, big data
Analytics Hiện tại có insight Mạnh mẽ hơn

Elasticsearch mạnh hơn về scale khổng lồ và analytic phức tạp, nhưng vận hành và chi phí tài nguyên cao. Meilisearch phù hợp khi bạn cần search tốt, nhanh, đơn giản cho app hoặc website có quy mô vừa và nhỏ.

Filtering và Faceted Search

Meilisearch hỗ trợ filter phức tạp bằng cú pháp dễ hiểu:

{
  "q": "smartphone",
  "filter": "price > 10000000 AND category = 'Điện thoại'",
  "facets": ["category", "brand"],
  "sort": ["price:desc"]
}

Faceted search tự động tính counts cho mỗi facet value, giúp xây dựng UI lọc theo thương hiệu, giá, size… Hỗ trợ cả geo search cho ứng dụng bản đồ, delivery.

Client SDKs

Meilisearch có SDK cho hầu hết ngôn ngữ:

  • JavaScript — meilisearch
  • Python — meilisearch
  • Rust — meilisearch-sdk
  • Go — github.com/meilisearch/meilisearch-go
  • PHP, .NET, Java, Ruby, Swift, Dart

Ví dụ dùng Python client:

from meilisearch import Client

client = Client('http://localhost:7700', 'my_master_key')
index = client.index('products')

# Thêm documents
index.add_documents([
    {'id': 1, 'name': 'iPhone 15 Pro', 'category': 'Điện thoại'}
])

# Tìm kiếm
results = index.search('iphone', {'limit': 5})
print(results['hits'])

Triển khai production

Cho production deployment, cần chú ý:

  • Master key — Bảo vệ endpoints bằng API key (mặc định tắt)
  • Persistent volume — Mount dữ liệu ra ngoài container (Docker)
  • Backup — Dump database định kỳ qua API
  • Snapshot — Tự động snapshot khi dump
  • High availability — Multi-node cho quy mô lớn (version enterprise)

Meilisearch cung cấp endpoint /dumps để tạo backup binary, và /snapshots cho Real-time backups. Với scale nhỏ vừa, một instance single-node là đủ.

Hệ thống server lưu trữ database và search engine cho ứng dụng web hiện đại

Khi nào nên dùng Meilisearch?

Meilisearch lý tưởng cho:

  • E-commerce — Tìm kiếm sản phẩm với filter giá, thương hiệu
  • Blog/News — Tìm kiếm bài viết, thẻ tag nhanh
  • Documentation — Search tài liệu kỹ thuật với typo tolerance
  • App nội bộ — Tìm kiếm record trong CRM, ERP
  • Job board — Lọc việc làm theo kỹ năng, địa điểm

Nếu bạn đang dùng PostgreSQL LIKE query hoặc MySQL FULLTEXT và gặp giới hạn về tốc độ, Meilisearch là nâng cấp tự nhiên. Nó cũng là lựa chọn tốt hơn Elasticsearch cho phần lớn dự án quy mô vừa — ít vận hành hơn, chi phí thấp hơn, mà vẫn đáp ứng tốt nhu cầu search.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Robot hình người: Cuộc đua Tesla Optimus, Figure và Unitree

Robot hình người đang trở thành cuộc đua công nghệ lớn nhất thập kỷ. Tesla Optimus, Figure AI và Unitree Go2 đại diện cho 3 hướng tiếp cận khác nhau:…

Xem thêm

Hono Framework là gì? Web framework edge siêu nhẹ chỉ 14KB

Hono Framework là gì? Hono (có nghĩa là “lửa” trong tiếng Nhật 🔥) là một web framework siêu nhẹ được xây dựng hoàn toàn trên Web Standards. Nó cho phép…

Xem thêm

Cloudflare R2: Object storage zero egress thay thế S3

Cloudflare R2 là gì? Cloudflare R2 là dịch vụ object storage được thiết kế để thay thế Amazon S3 mà không tính phí egress. Ra mắt từ 2021, R2 đã…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất