Tutorial 2x Tìm kiếm tiếng Trung & tiếng Nhật chỉ sử dụng NGRAM cho XenForo 2

PVS

Super Moderator
Thành viên BQT
Tham gia
28/02/2015
Bài viết
17,015
Được Like
12,735
Tìm kiếm tiếng Trung & tiếng Nhật chỉ sử dụng NGRAM cho XenForo 2

Hướng dẫn này không bao gồm Xenforo Enhanced Search và Elasticsearch.

Xenforo Enhanced Search (Xf-ES) và Elaticsearch được tạo cho các diễn đàn lớn. Nó không được tối ưu hóa về mặt tài chính để mua chúng cho các diễn đàn nhỏ. Vì một số người dùng lẻ đã mua Xf-ES chỉ với mục đích đạt được các chức năng tìm kiếm cho tiếng Trung/Nhật, nên đây là giải pháp để đạt được điều đó mà không cần Xf-ES.

Điều kiện tiên quyết: Sử dụng Oracle MySQL 5.7.28 trở lên, bao gồm cả MySQL 8 trở lên.
(Nếu bạn muốn sử dụng các bản phân phối MySQL khác như MariaDB, v.v., bản phân phối phải có hỗ trợ tích hợp NGRAM. Đó là lý do tại sao tôi không sử dụng MariaDB tại thời điểm này.)

KHÔNG LẬP TRÌNH TÌM HIỂU CÁC BƯỚC ĐƯỢC ĐƯA RA BÊN DƯỚI

(Khi tôi nói ".cnf", nó có nghĩa là "my.ini" cho người dùng Windows. Vị trí của nó thay đổi tùy theo bản phân phối HĐH và MySQL của bạn.)

Đầu tiên, tìm tệp "my.cnf" của bản phân phối MySQL đang hoạt động của bạn và đảm bảo các dòng sau được bao gồm ở cuối tệp:
Mã:
ft_min_word_len = 2
innodb_ft_min_token_size = 2
ngram_token_size = 2

Sau đó, khởi động lại dịch vụ MySQL của bạn. (Hoặc chỉ cần khởi động lại.)
-------------------
Đóng diễn đàn của bạn bây giờ. Bạn có thể muốn tắt máy chủ web của mình cho đến khi tất cả các bước này kết thúc.
-------------------
Tiếp theo, đề nghị bạn sao lưu toàn bộ cơ sở dữ liệu diễn đàn của bạn (phòng trường hợp bạn làm sai).

Sau đó, xuất bảng "xf_search_index" từ cơ sở dữ liệu diễn đàn của bạn dưới dạng tệp "[FILENAME].SQL".
Bạn sẽ sử dụng tệp đó để kích hoạt NGRAM cho bảng này.

Trong trường hợp này, tôi sử dụng tệp xuất được xuất bởi PHPMyAdmin (bạn có thể muốn bao gồm lệnh DROP TABLE IF EXISTS khi tạo các dumps).

Sau đó, bạn có thể thấy hai dòng sau trong dumps MySQL của bạn:
(chỉ cần tìm kiếm "FULLTEXT" được đặt trước thông qua tệp dumps MySQL nếu bạn có toàn bộ cơ sở dữ liệu diễn đàn của mình.)
Mã:
ALTER TABLE `xf_search_index` ADD FULLTEXT KEY `title_message_metadata` (`title`,`message`,`metadata`);
ALTER TABLE `xf_search_index` ADD FULLTEXT KEY `title_metadata` (`title`,`metadata`);

Thêm " WITH PARSER ngram" ngay trước dấu chấm phẩy ở cuối mỗi dòng như ví dụ sau:
(Đừng quên khoảng trắng ngay trước lệnh "VỚI PARSER".)
Mã:
ALTER TABLE `xf_search_index` ADD FULLTEXT KEY `title_message_metadata` (`title`,`message`,`metadata`) WITH PARSER ngram;
ALTER TABLE `xf_search_index` ADD FULLTEXT KEY `title_metadata` (`title`,`metadata`) WITH PARSER ngram;

Lưu tệp dump.

Sau đó, đọc tệp dump sửa đổi này vào cơ sở dữ liệu của bạn.
Điều này sẽ tự động loại bỏ bảng "xf_search_index" cũ của bạn và thay thế nó bằng bảng mới.
Bằng cách này, MySQL có thể tạo lại bộ đệm chỉ mục.

Cuối cùng, hãy vào Admin CP.
Đến "Setup > Options > Search Options" và thiết lập "Search minimum word length" thành "2".
Đến "Tools -> Data Maintenance -> Rebuild Cache" và xây dựng lại chỉ mục tìm kiếm.

1578595795841.png

Chúc các bạn thành công.


Nguồn: xenforo.com​
 

Top Bottom