Giới thiệu PHP-fts: Động cơ tìm kiếm toàn văn viết bằng PHP thuần, không cần cài đặt extension

Phần mềm06 tháng 5, 2026·4 phút đọc

PHP-fts là một thư viện tìm kiếm toàn văn viết hoàn toàn bằng PHP thuần, không yêu cầu bất kỳ extension hay dịch vụ bên ngoài nào. Nó là giải pháp lý tưởng cho các dự án trên shared hosting hoặc VPS nhỏ, cung cấp tính năng đánh giá độ liên quan BM25, lọc linh hoạt và khả năng chịu lỗi chính tả nhờ chỉ mục trigram.

Giới thiệu PHP-fts: Động cơ tìm kiếm toàn văn viết bằng PHP thuần, không cần cài đặt extension

Giới thiệu PHP-fts: Động cơ tìm kiếm toàn văn viết bằng PHP thuần, không cần cài đặt extension

Phiên bản PHP-ftsPhiên bản PHP-fts

Trong thế giới phát triển web hiện đại, việc tích hợp tính năng tìm kiếm thường gắn liền với các giải pháp nặng ký như Elasticsearch hay Meilisearch. Tuy nhiên, không phải dự án nào cũng có hạ tầng để vận hành những dịch vụ này. PHP-fts ra đời như một giải pháp thay thế nhẹ nhàng nhưng đầy đủ tính năng: một động cơ tìm kiếm toàn văn (full-text search) được viết hoàn toàn bằng PHP thuần.

Số lượng dependenciesSố lượng dependencies

Động cơ tìm kiếm "không phụ thuộc"

Điểm đặc biệt nhất của PHP-fts là sự độc lập. Nó không yêu cầu cài đặt bất kỳ extension PHP nào (như SQLite hay các thư viện C), không cần dịch vụ bên ngoài và không có dependencies phức tạp. Mọi thứ được đóng gói trong các tệp tin, giúp việc triển khai trở nên cực kỳ đơn giản: chỉ cần sao chép mã nguồn và chỉ định một thư mục để lưu trữ dữ liệu.

Công cụ này hướng đến những đối tượng cụ thể:

  • Các dự án chạy trên shared hosting (như OVH, Infomaniak) nơi việc cài đặt phần mềm hệ thống là không thể.
  • Các VPS nhỏ hoặc dự án cá nhân muốn tối thiểu hóa chi phí hạ tầng.
  • Những ứng dụng cần tính di động cao, có thể sao chép dữ liệu index giữa các máy chủ mà không cần xây dựng lại.

Các tính năng nổi bật

Mặc dù nhẹ nhàng, PHP-fts không thiếu các tính năng quan trọng của một hệ thống tìm kiếm hiện đại:

  • Chỉ mục Trigram: Giúp tìm kiếm chịu lỗi với chính tả (typos) và khớp các đoạn văn bản một phần (partial matches).
  • Đánh giá độ liên quan BM25 + IDF: Sử dụng thuật toán tiêu chuẩn công nghiệp (giống như Lucene hay Elasticsearch) để xếp hạng kết quả chính xác nhất.
  • Tăng trọng số trường (Field Boosting): Cho phép ưu tiên các trường quan trọng hơn, ví dụ như tiêu đề (title) sẽ có điểm số cao hơn mô tả (description).
  • Bộ lọc linh hoạt: Hỗ trợ các toán tử so sánh (=, !=, >, <), logic kết hợp AND/OR, và tìm kiếm trong mảng.
  • Lưu trữ nhị phân: Dữ liệu được lưu dưới dạng file nhị phân, đảm bảo tính toàn vẹn và khả năng chuyển port giữa các server.

Hiệu suất và sử dụng

Theo các bài kiểm tra hiệu năng (benchmark) trên môi trường shared hosting Linux với 10.000 tài liệu, tốc độ tìm kiếm của PHP-fts rất ấn tượng:

  • Trung bình (Median): 3.2 ms
  • P95 (95% truy vấn): 12.5 ms
  • P99 (99% truy vấn): 22.9 ms

Việc lập chỉ mục (indexing) được thiết kế để chạy ngoại tuyến (offline) thông qua các tác vụ định lịch (cron jobs), giúp không làm chậm tốc độ phản hồi của ứng dụng khi người dùng thực hiện tìm kiếm.

Để sử dụng, bạn chỉ cần cài đặt qua Composer:

composer require ols/php-fts

Và khởi tạo động cơ tìm kiếm với vài dòng code đơn giản:

use Ols\PhpFts\SearchEngine;

$engine = new SearchEngine();
$engine->open('./search_data');

// Chèn tài liệu
$docId = $engine->insert([
    'title'       => 'Giày da nâu',
    'description' => 'Giày thành lịch sử chất liệu da mềm',
    'price'       => 129.90,
    'category'    => 'Giày',
]);

// Tìm kiếm
$results = $engine->search('giày da', limit: 20, boosts: [
    'title'       => 3.0, // Tăng trọng số cho tiêu đề
    'description' => 1.0,
]);

foreach ($results as $result) {
    echo $result['document']['title'] . ' — score: ' . $result['score'] . PHP_EOL;
}

$engine->close();

Khi nào nên và không nên dùng?

PHP-fts là lựa chọn tuyệt vời nếu dữ liệu của bạn trong phạm vi từ vài trăm đến vài chục nghìn tài liệu. Tuy nhiên, nếu bạn đang xử lý dữ liệu quy mô lớn (triệu bản ghi) hoặc cần tính năng tìm kiếm theo địa lý (geo search), các giải pháp chuyên dụng như Elasticsearch vẫn là lựa chọn tối ưu hơn.

Dưới đây là một ví dụ minh họa về giao diện tìm kiếm sản phẩm được xây dựng trên nền tảng PHP-fts:

Gif demo ứng dụng PHP-ftsGif demo ứng dụng PHP-fts

Với giấy phép MIT, PHP-fts là một công cụ mã nguồn mở giá trị cho cộng đồng lập trình viên PHP, đặc biệt là những người đang tìm kiếm giải pháp tìm kiếm đơn giản, hiệu quả mà không muốn vướng vào sự phức tạp của việc quản trị hạ tầng.

Giấy phép MITGiấy phép MIT

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗