Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hướng dẫn sử dụng Sphinx với PHP và MySQL

Tôi đã xem qua bài đăng này nhưng không tìm thấy câu trả lời mà tôi muốn xem. Đây là Hướng dẫn Bắt đầu Nhanh của tôi:

1. Cài đặt Sphinx

Trên Mac với Homebrew:

brew install sphinx

Trên Amazon Linux (CentOS) với yum:

yum install sphinx

2. Tạo cấu hình Sphinx

Sphinx đi kèm với mẫu cấu hình. Tìm sphinx.conf.dist trong thư mục configs:

Trên máy Mac được cài đặt với Homebrew:

/usr/local/Cellar/sphinx/<sphinx version>/etc

Trên Amazon Linux được cài đặt với yum:

/etc/sphinx

Nó khá đơn giản nhưng có thể chứa quá nhiều cài đặt cho người mới. Trong trường hợp này, bạn có thể sử dụng cấu hình đơn giản sau:

source TestSource {
    type = mysql
    sql_host = <host>
    sql_user = <user>
    sql_pass = <password>
    sql_db = <db>

    sql_query_range = select min(id), max(id) from TestTable
    sql_range_step = 2048

    sql_query = select id, some_info from TestTable\
        where id >= $start and id <= $end
}

index TestIndex {
    source = TestSource
    path = /var/lib/sphinx/test-index
    min_word_len = 3
    min_infix_len = 3
}

searchd {
    log = /var/log/sphinx/searchd.log
    query_log = /var/log/sphinx/query.log
    pid_file = /var/run/searchd.pid

    max_matches = 200

    listen = localhost:9312
}

Tôi đã thêm cài đặt max_matches vào cấu hình này vì câu hỏi đầu tiên của tôi sau khi tôi làm mọi thứ hoạt động là "Tại sao tôi luôn chỉ nhận được 20 kết quả tìm kiếm?". Với max_matches, bạn có thể đặt giới hạn cho số lượng kết quả tìm kiếm.

3. Tạo chỉ mục bằng cách sử dụng trình lập chỉ mục

indexer --all

4. Chạy daemon Sphinx

sudo searchd -c /path/to/config/sphinx.conf

5. Cài đặt phần mở rộng PHP Sphinx

Trên Mac với Homebrew:

brew install homebrew/php/php56-sphinx

Trên Amazon Linux với yum:

yum install libsphinxclient
pecl install sphinx

6. Truy vấn chỉ mục của bạn từ PHP

$index = new SphinxClient();
$index->setServer("127.0.0.1", 9312);

$result = $index->query('some search term', 'TestIndex');

print_r($result);

Trong trường hợp có bất kỳ sai sót nào, bạn có thể lấy thêm thông tin bằng phương pháp sau:

$index->getLastError();

7. Luôn cập nhật chỉ mục

Để duy trì một chỉ mục cập nhật, bạn có thể sử dụng hai chỉ số:

  1. Chỉ mục chính, không được cập nhật thường xuyên (một lần mỗi tuần, tháng, v.v.)
  2. Và chỉ mục delta, cập nhật thường xuyên (mỗi giờ, 5 phút, v.v.)

Mỗi khi chỉ mục delta được lập chỉ mục lại, nó sẽ được hợp nhất với chỉ mục chính

Theo liên kết này http://www.sphinxconsultant.com/sphinx-search-delta -indexing / để đọc thêm về phương pháp này.

Các liên kết tôi thấy hữu ích:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để đặt bí danh một trường hoặc cột trong MySQL?

  2. Bảng không tồn tại sau khi TẠO BẢNG

  3. Làm cách nào để đặt số hàng tối đa trong bảng MySQL?

  4. Làm cách nào để có được một tập lệnh tạo bảng trong MySQL Workbench?

  5. Làm thế nào để có được tổng số hàng được tìm thấy mà không cần xem xét giới hạn trong PDO?