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

Tự động cập nhật Sphinx có được lập chỉ mục khi bạn thêm dữ liệu vào SQL của mình không?

Câu trả lời là không và bạn cần yêu cầu sphinx lập chỉ mục lại db của bạn.

Có một số bước và yêu cầu mà bạn cần biết:

  1. Chính và delta là bắt buộc
  2. Lần chạy đầu tiên, bạn cần lập chỉ mục chỉ mục chính của mình.
  3. Sau lần chạy đầu tiên, bạn có thể lập chỉ mục delta bằng cách xoay nó (để đảm bảo dịch vụ đang chạy và dữ liệu trên web có thể được sử dụng tại thời điểm đó)
  4. Trước khi thực hiện bước tiếp theo, bạn cần tạo một bảng để đánh dấu "các hàng được lập chỉ mục cuối cùng" của mình. Có thể sử dụng ID hàng được lập chỉ mục cuối cùng cho delta lập chỉ mục tiếp theo và hợp nhất delta thành chính.
  5. Bạn cần hợp nhất chỉ mục delta của mình với index.as bên trong các tài liệu nhân sư http://sphinxsearch.com/docs/current.html#index-merging
  6. Khởi động lại dịch vụ tượng nhân sư.

    LỜI KHUYÊN:Tạo chương trình của riêng bạn có thể thực thi chỉ mục bằng cách sử dụng C # hoặc các ngôn ngữ khác. Bạn có thể thử lịch trình tác vụ của windows cũng được.

Đây là tâm sự của tôi:

source Main
{
type            = mysql

sql_host        = localhost
sql_user        = root
sql_pass        = password
sql_db          = table1
sql_port        = 3306  # optional, default is 3306
sql_query_pre = REPLACE INTO table1.sph_counter SELECT 1, MAX(PageID) FROM table1.pages;
sql_query       = \
    SELECT  pd.`PageID`, pd.Status from table1.pages pd
    WHERE pd.PageID>=$start AND pd.PageID<=$end \
    GROUP BY pd.`PageID`

sql_attr_uint       = Status

sql_query_info      = SELECT * FROM table1.`pages` pd WHERE pd.`PageID`=$id
sql_query_range     = SELECT MIN(PageID),MAX(PageID)\
              FROM tabl1.`pages`
sql_range_step      = 1000000
}


source Delta : Main
{
sql_query_pre = SET NAMES utf8

sql_query = \
    SELECT  PageID, Status from pages \
    WHERE PageID>=$start AND PageID<=$end 

sql_attr_uint       = Status

sql_query_info      = SELECT * FROM table1.`pages` pd WHERE pd.`PageID`=$id
sql_query_range     = SELECT (SELECT MaxDoc FROM table1.sph_counter WHERE ID = 1) MinDoc,MAX(PageID) FROM table1.`pages`;
sql_range_step      = 1000000
}


index Main
{
source          = Main
path            = C:/sphinx/data/Main
docinfo         = extern
charset_type        = utf-8
}


index Delta : Main
{
    source = Delta
path = C:/sphinx/data/Delta
charset_type = utf-8
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql tham gia truy vấn thứ tự theo hai cột

  2. Tại sao sử dụng INT để chọn chỉ mục Varchar chứa các số lại chậm hơn nhiều so với sử dụng Chuỗi?

  3. Làm thế nào để tạo cơ sở dữ liệu với doct2?

  4. Cách xây dựng menu cấp độ không giới hạn thông qua PHP và mysql

  5. Trong MySQL workbench tên người dùng / mật khẩu cho kết nối là gì?