Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cài đặt và cấu hình Sphinx trên Ubuntu 16.04


Trong bài này, chúng ta sẽ học cách cài đặt và cấu hình Sphinx trên Ubuntu 16.04. Sphinx là công cụ tìm kiếm toàn văn bản (full-text search) mã nguồn mở, hiệu suất cao với dữ liệu lớn từ nhiều nguồn (SQL, file text, v.v.).

Tính năng của Sphinx

  • Chỉ mục nâng cao và công cụ truy vấn tốt.
  • Hiệu suất tìm kiếm và lập chỉ mục cao.
  • Kết quả xử lý sau nâng cao.
  • Dễ dàng mở rộng với tìm kiếm nâng cao.
  • Tích hợp với nguồn SQL và XML.
  • Có thể mở rộng xử lý dữ liệu lớn với hàng nghìn truy vấn.

Điều kiện tiên quyết

Trước khi bắt đầu, cần:

  • Máy Ubuntu với user non-root có quyền sudo.
  • MySQL đã cài đặt.

Cài đặt Sphinx

Cài đặt qua kho mặc định Ubuntu bằng apt-get:

$ sudo apt-get install sphinxsearch

(Kết quả cài đặt hiển thị các gói phụ thuộc: libmysqlclient20, libstemmer0d, sphinxsearch)

Tạo cơ sở dữ liệu kiểm thử cho Sphinx

Đăng nhập MySQL và tạo database test, nhập dữ liệu mẫu:

$ mysql -u root -p
mysql> create database test;
mysql> SOURCE /etc/sphinxsearch/example.sql;
mysql> quit

Cấu hình Sphinx cho tìm kiếm

Sao chép file cấu hình mẫu và chỉnh sửa:

$ cp /etc/sphinxsearch/sphinx.conf.sample /etc/sphinxsearch/sphinx.conf
$ sudo vi /etc/sphinxsearch/sphinx.conf

File cấu hình gồm 3 block chính: source, index, searchd.

Block source trong sphinx.conf

source src1 {
    type = mysql
    sql_host = localhost
    sql_user = root
    sql_pass = ubuntu
    sql_db = test
    sql_port = 3306
    sql_query = \
        SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
        FROM documents
    sql_attr_uint = group_id
    sql_attr_timestamp = date_added
}

Block index trong sphinx.conf

index test {
    source = src1
    path = /var/lib/sphinxsearch/data/test
    docinfo = extern
}

Block searchd trong sphinx.conf

searchd {
    listen = 9312:sphinx
    listen = 9306:mysql41
    log = /var/log/sphinxsearch/searchd.log
    query_log = /var/log/sphinxsearch/testquery.log
    read_timeout = 5
    max_children = 30
    pid_file = /var/run/sphinxsearch/testsearchd.pid
    seamless_rotate = 1
    preopen_indexes = 1
    unlink_old = 1
    binlog_path = /var/lib/sphinxsearch/datatest
}

Quản lý chỉ mục trên Sphinx

Lập chỉ mục từ file cấu hình:

$ sudo indexer --all

Tạo cronjob để cập nhật chỉ mục định kỳ (ví dụ hàng giờ):

@hourly /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf --all

Khởi động dịch vụ Sphinx

Bật tự động khởi động trong /etc/default/sphinxsearch:

START=yes

Khởi động lại dịch vụ:

$ sudo systemctl restart sphinxsearch.service

Kiểm tra trạng thái:

$ sudo systemctl status sphinxsearch.service

Kiểm tra tìm kiếm Sphinx

Kết nối SphinxQL qua port 9306:

$ mysql -h0 -P9306

Tìm kiếm từ "test":

mysql> SELECT * FROM test WHERE MATCH('test'); SHOW META;

Kết quả trả về 3 bản ghi khớp.

Với cài đặt này, Sphinx trở thành công cụ tìm kiếm mạnh mẽ, xử lý hàng tỷ tài liệu, terabyte dữ liệu và hàng nghìn truy vấn/giây.