Bài 2: Xác định chỉ mục FULLTEXT cho Tìm kiếm toàn văn bản của MySQL (ok)

Xác định chỉ mục FULLTEXT cho Tìm kiếm toàn văn bản của MySQL

Tóm tắt : trong hướng dẫn này, bạn sẽ tìm hiểu cách xác định chỉ mục toàn văn để thực hiện các tìm kiếm toàn văn bản khác nhau trong MySQL.

Trước khi thực hiện tìm kiếm toàn văn bản trong một cột của bảng, bạn phải lập chỉ mục dữ liệu của nó. MySQL sẽ tạo lại chỉ mục toàn văn bất cứ khi nào dữ liệu của cột thay đổi. Trong MySQL, chỉ mục toàn văn là một loại chỉ mục có tên FULLTEXT.

MySQL hỗ trợ lập chỉ mục và lập chỉ mục lại dữ liệu tự động cho cột kích hoạt tìm kiếm toàn văn bản. MySQL phiên bản 5.6 hoặc mới hơn cho phép bạn xác định một chỉ mục toàn văn bản cho một cột mà kiểu dữ liệu là CHAR, VARCHARhoặc TEXT trong MyISAM hoặc InnoDB loại bảng . Lưu ý rằng MySQL hỗ trợ chỉ mục toàn văn trong các bảng InnoDB kể từ phiên bản 5.6.

MySQL cho phép bạn xác định FULLTEXTchỉ mục bằng cách sử dụng câu lệnh CREATE TABLE khi bạn tạo bảng hoặc câu lệnh ALTER TABLE hoặc CREATE INDEX cho các bảng hiện có.

Xác định chỉ mục FULLTEXT bằng cách sử dụng câu lệnh CREATE TABLE

Thông thường, bạn xác định FULLTEXTchỉ mục cho một cột khi bạn tạo bảng mới bằng cách sử dụng CREATE TABLEcâu lệnh như sau:

CREATE TABLE table_name(
 column1 data_type, 
        column2 data_type,
        column3 data_type,

PRIMARY_KEY(key_column),
FULLTEXT (column1,column2,..)
);

Một ví dụ đã tạo bản fulltex search thành công :)

Ví dụ 1: Tạo bằng lệnh

CREATE TABLE table_name(
 column1 data_type, 
        column2 data_type,
        column3 data_type,

PRIMARY_KEY(key_column),
FULLTEXT (column1,column2,..)
);
===
CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    FULLTEXT (City)
)

Ví dụ 2: Tạo bằng select

CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
)

Để tạo FULLTEXTchỉ mục, bạn đặt một danh sách các cột được phân tách bằng dấu phẩy trong ngoặc đơn sau FULLTEXTtừ khóa.

Câu lệnh sau đây tạo một bảng mới có tên postslà một FULLTEXTchỉ mục bao gồm post_contentcột.

CREATE TABLE posts (
  id int(4) NOT NULL AUTO_INCREMENT,
  title varchar(255) NOT NULL,
  post_content text,
  PRIMARY KEY (id),
  FULLTEXT KEY post_content (post_content)
);

Xác định chỉ mục FULLTEXT cho các bảng hiện có

Trong trường hợp bạn đã có các bảng hiện có và muốn xác định các chỉ mục toàn văn, bạn có thể sử dụng ALTER TABLEcâu lệnh hoặc CREATE INDEXcâu lệnh.

Xác định chỉ mục FULLTEXT bằng cách sử dụng câu lệnh ALTER TABLE

Cú pháp sau đây xác định một FULLTEXTchỉ mục bằng cách sử dụng ALTER TABLEcâu lệnh:

ALTER TABLE table_name  
ADD FULLTEXT(column_name1, column_name2,…)

Ví dụ 3: Chỉnh sửa column đánh chỉnh số FULLTEXT bằng câu lệnh :)

ALTER TABLE Persons ADD FULLTEXT(LastName)

Trong cú pháp này, bạn đặt mệnh đề table_nameADD FULLTEXTmệnh đề xác định một FULLTEXTchỉ mục cho một hoặc nhiều cột.

Ví dụ: bạn có thể xác định một FULLTEXTchỉ mục cho các cột productDescriptionproductLinecột trong productsbảng của cơ sở dữ liệu mẫu như sau:

ALTER TABLE products  
ADD FULLTEXT(productDescription,productLine)

Xác định FULLTEXTchỉ mục bằng cách sử dụng CREATE INDEXcâu lệnh

Bạn cũng có thể sử dụng CREATE INDEXcâu lệnh để tạo một FULLTEXTchỉ mục cho các bảng hiện có. Xem cú pháp sau:

CREATE FULLTEXT INDEX index_name
ON table_name(idx_column_name,...)

Câu lệnh sau đây tạo một FULLTEXTchỉ mục cho các cột addressLine1addressLine2cột của officesbảng.

CREATE FULLTEXT INDEX address
ON offices(addressLine1,addressLine2)

Ví dụ 4: Đặt tên chỉ mục vào tạo chỉ mục bằng câu lệnh :)

CREATE FULLTEXT INDEX FirstName ON persons(FirstName)

Lưu ý rằng đối với bảng có nhiều hàng, việc tải dữ liệu vào bảng không có FULLTEXTchỉ mục trước sẽ nhanh hơn và sau đó tạo FULLTEXTchỉ mục, hơn là tải một lượng lớn dữ liệu vào bảng có FULLTEXTchỉ mục hiện có .

Xóa các cột tìm kiếm toàn văn

Để xóa FULLTEXTchỉ mục, bạn chỉ cần xóa chỉ mục bằng cách sử dụng ALTER TABLE … DROP INDEXcâu lệnh. Ví dụ: câu lệnh sau sẽ xóa chỉ mục trong bảng:address FULLTEXT offices

ALTER TABLE offices
DROP INDEX address;

Ví dụ 5: Xóa các cột tìm kếm toàn văn

ALTER TABLE persons DROP INDEX FirstName;

Trong hướng dẫn này, chúng tôi đã chỉ cho bạn cách xác định và xóa FULLTEXTcác chỉ mục hỗ trợ tìm kiếm toàn văn bản trong MySQL.

Last updated