FULL TEXT SEARCH LÀ GÌ? TẠI SAO NÊN SỬ DỤNG TRONG MYSQL?

  -  

Là một thiết kế viên mà đã từng có lần phải thao tác làm việc với đại lý dữ liệu, hay đối chọi thuần là đã từng là một trong trang web bán hàng ,chắc hẳn chúng ta đã từng nghe qua về có mang “Full text search”.

Bạn đang xem: Full text search là gì? tại sao nên sử dụng trong mysql?

Khái niệm này sẽ được khái niệm khá ví dụ và tương đối đầy đủ trên wikipedia. Nói một cách đối kháng giản, “Full text search” là kĩ thuật tìm kiếm trên “Full text database”, ở chỗ này “Full text database” là cơ sở dữ liệu chứa “toàn bộ” những kí từ (text) của một hoặc một số trong những các tài liệu, bài xích báo.. (document), hoặc là của websites.

Trong bài viết này, bản thân sẽ reviews về Full Text Search, từ bỏ khái niệm mang lại ứng dụng trong thực tiễn của kinh nghiệm này.

Introduction

Chắc hẳn chúng ta đã từng dùng qua 1 kĩ thuật tìm kiếm hết sức cơ bản, đó là thông qua câu lệnh lượt thích của SQL.

Câu lệnh LIKE cũng tương đương với vấn đề bạn matching pattern cho “từng” chuỗi của từng loại (rows) của field tương ứng, do đó về độ tinh vi sẽ là con đường tính cùng với số dòng, cùng số kí từ bỏ của từng dòng, hay chính là “toàn bộ kí tự đựng trong field yêu cầu tìm kiếm”. Do đó sử dụng lượt thích query sẽ gặp gỡ các vấn đề:

Không bao gồm xácĐộ nhiễu caoTừ đồng nghĩa (synonyms)Từ cấu tạo bằng chữ đầu của nhiều từ (acronym)

Performance không tốt (Tốc độ truy tìm vấn chậm, ‘%keyword%’ không sử dụng index)

Vấn đề với tra cứu kiếm giờ Việt có dấu với không dấu

Như vậy bọn họ cần một kinh nghiệm tìm tìm khác, xuất sắc hơn lượt thích query, mềm mỏng hơn, xuất sắc về performance hơn, đó đó là Full text search.

*, Cơ phiên bản về kinh nghiệm Full text searchVề khía cạnh cơ bản, điều tạo ra sự sự khác hoàn toàn giữa Full text search và những kĩ thuật tìm kiếm thông thường khác chính là “Inverted Index”. Vậy đầu tiên chúng ta sẽ tò mò về Inverted Index.

*

Inverted Index là gì

D1 = "This is first document"D2 = "This is second one"D3 = "one two"Inverted Index của 3 documents đó sẽ được lưu bên dưới dạng như sau:

"this" => D1, D2"is" => D1, D2"first" => D1"document" => D1"second" => D2"one" => D2, D3"two" => D3Từ lấy ví dụ trên các chúng ta cũng có thể hình dung được về vậy nào là Inverted Index. Vậy việc tạo index theo term như trên hữu dụng thế nào? Việc trước tiên là inverted index góp cho việc tìm kiếm kiếm trên full text database trở bắt buộc nhanh hơn khi nào hết.

Xem thêm: Học Cách Làm Cách Nào Để Có Nhiều Tiền Và Quản Lý Chi Tiêu Tốt Nhất

Hãy trả sử bạn muốn query các từ “This is first”, thì cố gắng vì câu hỏi phải scan từng document một, câu hỏi tìm kiếm document đựng 3 term trên sẽ biến đổi phép toán union của 3 tập hợp (document sets) của 3 term kia trong inverted index.

D1, D2 union D1, D2 union D1 = D1Một điểm lợi nữa chính là việc inverted index cực kì flexible trong việc đào bới tìm kiếm kiếm. Query nguồn vào của bạn có thể là “This is first”, “first This is” tốt “This first is” thì độ phức tạp tính toán của phép union kia vẫn chính là không đổi.

Như vậy bọn họ đã phát âm phần nào về quan niệm “Thế làm sao là Inverted Index”.

Trong phần tiếp theo chúng ta sẽ tò mò về ví dụ về bí quyết implement của inverted index, và ứng dụng của inverted index vào việc tìm kiếm thông tin thông qua các kĩ thuật chủ yếu như:

+, Tokenization technique (thông qua N-Gram hoặc Morphological Analysis)

+, Query technique

+, Scoring technique.

Chính chính vì thế việc bóc tách string, hay nói một cách khác là Tokenize là 1 bài toán con quan trọng đặc biệt nằm trong vấn đề lớn của Full Text Search. Ở bài này, chúng ta sẽ tìm hiểu về 2 kỹ năng Tokenize cơ bạn dạng là:

N-gram

N-gram là kinh nghiệm tokenize một chuỗi thành những chuỗi con, thông qua việc chia hầu như chuỗi đã gồm thành những chuỗi bé đều nhau, gồm độ dài là N.

Xem thêm: Draytek 2925 Hướng Dẫn Cấu Hình Draytek Vigor 2925, Cấu Hình Tính Năng

Về cơ phiên bản thì N hay nằm tự 1~3, với các tên gọi tương ứng là unigram(N==1), bigram(N==2), trigram(N==3). Ví dụ đơn giản dễ dàng là chúng ta có chuỗi “good morning”, được so sánh thành bigram:

"dinh ngoc nam" => "di","in","nh","h ", " n","ng","go","oc", "c ", "na", "am"Từ ví dụ như trên các bạn có thể dễ dàng hình dung về kiểu cách thức hoạt động vui chơi của N-gram. Để implement N-gram, chỉ cần một vài mẫu code, như ví dụ viết bằng js =)) như sau:

var Ngram = function (src, ngram) var _ngram = <>; if (src.length >= ngram) for (var index = 0;index src.length - ngram + 1;index ++) _ngram.push(src.split(index,index + ngram)) return _ngram;Morphological AnalysisĐịnh nghĩa của MA hơi dài đề nghị mình sẽ không còn nói chi tiết ở bài xích viết,các chúng ta có thể tham khảo tại

->https://en.wikipedia.org/wiki/Morphological_analysis_(problem-solving)

Về cơ bản thì MA là 1 trong kĩ thuật phổ biến trong cách xử trí ngôn ngữ tự nhiên và thoải mái (Natural Language Processing). Morphological đó là “cấu trúc” của từ, do vậy MA sẽ là “phân tích kết cấu của từ”, tốt nói một cách rõ ràng hơn, MA sẽ là kỹ năng tokenize mà để tách bóc một chuỗi ra thành những từ có ý nghĩa. Ví như cũng cụm từ “dinh ngoc nam” sống trên, họ sẽ so sánh thành:

Trên đó là những triết lý căn bạn dạng về FTS mà bạn muốn giới thiệu tới những bạn,hy vọng nó để giúp đỡ ích một trong những phần nào đó gần như thấc mắc của chúng ta ^^!.