1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nâng cao hiệu quả truy vấn dữ liệu dựa trên chỉ mục trong hệ quản trị CSDL MongoDB

77 57 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 77
Dung lượng 2,45 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT Collection Bộ sưu tập/tập hợp trong cơ sở dữ liệu MongoDB CSDL Viết tắt của cụm từ “cơ sở dữ liệu” Document Văn bản có cấu trúc tựa JSON trong cơ s

Trang 1

LỜI CẢM ƠN

Trước hết, tôi xin chân thành cảm ơn thầy PGS.TS Đặng Trần Khánh - người trực tiếp hướng dẫn khoa học - đã tận tình chỉ bảo, giúp đỡ và tạo mọi điều kiện thuận lợi cho tôi trong suốt thời gian thực hiện đề tài

Tôi cũng xin gửi lời cảm ơn chân thành đến quý thầy, cô trong khoa Công nghệ Thông tin Trường Đại học Lạc Hồng đã giúp tôi bổ sung thêm được những kiến thức

vô cùng quan trọng, bổ ích và những kinh nghiệm quý báu trong thời gian tham gia khóa học

Cuối cùng tôi xin bày tỏ lòng biết ơn sâu sắc những người thân, bạn bè, đồng nghiệp đã luôn luôn chia sẻ, hỗ trợ, động viên trong thời gian tôi thực hiện đề tài

Do thời gian xây dựng luận văn có hạn và còn thiếu kinh nghiệm thực tế nên dù

đã cố gắng hết khả năng để hoàn thành đề tài nhưng chắc chắn sẽ không tránh khỏi những thiếu sót Tôi rất mong nhận được sự động viên và góp ý của quý thầy, cô và bạn bè, đồng nghiệp để sớm hoàn thiện đề tài nhằm ứng dụng rộng rãi trong thực tiễn Xin chân thành cảm ơn!

Trang 2

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn thạc sĩ công nghệ thông tin: “Nâng cao hiệu quả truy vấn dữ liệu dựa trên chỉ mục trong hệ quản trị CSDL MongoDB” là kết quả của quá trình học tập, nghiên cứu khoa học độc lập, nghiêm túc

Các số liệu trong luận văn là trung thực, có nguồn gốc rõ ràng, được trích dẫn và

có tính kế thừa, phát triển từ các tài liệu, tạp chí, các công trình nghiên cứu đã được công bố, các website, …

Các phương pháp nêu trong luận văn được rút ra từ những cơ sở lý luận và quá trình nghiên cứu tìm hiểu của tác giả

Đồng Nai, tháng 10 năm 2016

Tác giả luận văn

Đỗ Trọng Nghĩa

Trang 3

MỤC LỤC

LỜI CẢM ƠN i

LỜI CAM ĐOAN ii

MỤC LỤC iii

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT vii

DANH MỤC BẢNG viii

DANH MỤC HÌNH ẢNH ix

DANH MỤC BIỂU ĐỒ xi

Chương 1 – Giới thiệu 1

1.1 Tổng quan 1

1.1.1 Cơ sở dữ liệu lớn và NoSQL 1

1.1.2 Hệ CSDL MongoDB 2

1.2 Các công trình nghiên cứu liên quan trong và ngoài nước 3

1.2.1 Tình hình nghiên cứu trong nước 3

1.2.2 Tình hình nghiên cứu trên thế giới 3

1.2.3 Nhận xét 3

1.3 Mục tiêu của luận văn 3

1.4 Phạm vi, đối tượng và phương pháp nghiên cứu 4

1.4.1 Phạm vi 4

1.4.2 Đối tượng 4

1.4.3 Phương pháp 4

Chương 2 – Chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB 6

2.1 Khái quát về hệ CSDL MongoDB 6

2.1.1 Cơ sở dữ liệu 7

Trang 4

2.1.2 Collection 7

2.1.3 Document 7

2.1.4 So sánh một số khái niệm trong CSDL quan hệ và MongoDB 8

2.2 Chỉ mục 8

2.3 Chỉ mục văn bản 9

2.3.1 Giới thiệu 9

2.3.2 Tạo lập chỉ mục văn bản 9

2.3.3 Xóa chỉ mục văn bản 10

2.3.4 Trọng số 10

2.3.5 Không phân biệt chữ hoa/thường và dấu phụ 11

2.3.6 Phân tách các thẻ 11

2.3.7 Phần tử chỉ mục 11

2.3.8 Các ngôn ngữ được hỗ trợ và stop words 11

2.4 Tìm kiếm văn bản 13

2.4.1 Tổng quan 13

2.4.2 Chỉ mục văn bản 13

2.4.3 Toán tử $text 13

2.4.4 Tìm kiếm cụm từ 15

2.4.5 Loại bỏ từ 15

2.4.5 Sắp xếp 16

2.5 Một số hạn chế của chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB 16

Chương 3 – Cải tiến chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB 18

3.1 Một số khái niệm 18

3.1.1 Stop words 18

Trang 5

3.1.2 Stemming 18

3.2 Mã nguồn, môi trường và công cụ nghiên cứu 19

3.2.1 Bản quyền và địa chỉ tải mã nguồn MongoDB 19

3.2.2 Cấu trúc tổng thể thư mục mã nguồn MongoDB 20

3.2.3 Môi trường và công cụ nghiên cứu 21

3.3 Cơ chế xây dựng chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB 23

3.3.1 Cơ chế xây dựng chỉ mục 23

3.3.2 Cơ chế tìm kiếm 25

3.4 Vai trò của stop words và stemming đối với quá trình xây dựng chỉ mục văn bản và tìm kiếm toàn văn 27

3.4.1 Vai trò của stop words 27

3.4.2 Vai trò của stemming 28

3.5 Đề xuất giải pháp cải tiến 28

3.6 Hiện thực hóa giải pháp 29

3.6.1 Stop words ngôn ngữ tiếng Việt 29

3.6.2 Đăng ký ngôn ngữ tiếng Việt vào MongoDB 31

3.6.3 Loại bỏ kỹ thuật stemming 31

3.6.4 Tóm lược 32

3.7 Tái xây dựng hệ CSDL MongoDB 33

3.7.1 Chuẩn bị môi trường 33

3.7.2 Thực hiện 33

3.7.3 Kiểm tra kết nối 34

Chương 4 – Thực nghiệm 36

4.1 Chuẩn bị môi trường thực nghiệm 36

4.2 Các tình huống thực nghiệm 37

Trang 6

4.2.1 Hỗ trợ ngôn ngữ tiếng Việt 37

4.2.2 Tạo chỉ mục 39

4.2.3 Tìm kiếm 42

4.3 Kết luận thực nghiệm 52

Chương 5 – Chương trình Demo 53

5.1 Giới thiệu chương trình demo 53

5.1.1 Mục đích 53

5.1.2 Ý nghĩa thực tiễn của chương trình demo 53

5.2 Nội dung chương trình demo 54

Chương 6 – Tổng kết 62

6.1 Ý nghĩa và đóng góp của luận văn 62

6.2 Thuận lợi và khó khăn trong quá trình xây dựng luận văn 62

6.2.1 Thuận lợi 62

6.2.2 Khó khăn 62

6.3 Một số hạn chế và hướng phát triển luận văn 62

6.3.1 Hạn chế 62

6.3.2 Hướng phát triển luận văn 62

6.4 Kết luận 63

Tài liệu tham khảo 1

Phụ lục 1

Trang 7

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT

Collection Bộ sưu tập/tập hợp trong cơ sở dữ liệu MongoDB

CSDL Viết tắt của cụm từ “cơ sở dữ liệu”

Document Văn bản có cấu trúc tựa JSON trong cơ sở dữ liệu

MongoDB

Stemming Kỹ thuật tìm kiếm từ gốc của một từ trong một ngôn ngữ Stop words Danh sách các từ phổ biến trong một ngôn ngữ

Trang 8

DANH MỤC BẢNG

Bảng 2.1: So sánh sự tương quan giữa một số đối tượng trong CSDL quan hệ và

MongoDB 8

Bảng 2.2: Các ngôn ngữ được hỗ trợ trong quá trình tạo chỉ mục và tìm kiếm văn bản trong MongoDB 12

Bảng 2.3: Các tham số của toán tử $text 14

Bảng 3.1: Stop words trong ngôn ngữ tiếng Việt 29

Bảng 3.2: Tóm tắt các sửa đổi cải tiến thực hiện trên mã nguồn MongoDB 32

Bảng 4.1: Kết quả thử nghiệm tạo chỉ mục văn bản trong MongoDB 39

Bảng 4.2: Stop words của ngôn ngữ tiếng Anh sử dụng trong MongoDB 43

Bảng 4.3: Kết quả thử nghiệm tìm kiếm toàn văn trong MongoDB trong trường hợp chỉ mục được tạo với ngôn ngữ tiếng Anh 45

Bảng 4.4: Kết quả thử nghiệm tìm kiếm toàn văn trong MongoDB trong trường hợp chỉ mục được tạo với ngôn ngữ tiếng Việt 48

Bảng 5.1: Ý nghĩa các vùng làm việc và chức năng của chương trình demo 55

Trang 9

DANH MỤC HÌNH ẢNH

Hình 2.1: Mô hình cơ sở dữ liệu trong MongoDB 7

Hình 3.1: Tổng thể thư mục mã nguồn MongoDB 20

Hình 3.2: Mã nguồn MongoDB được mở trên MS Visual Studio 2015 21

Hình 3.3: Công cụ Mongo Shell 21

Hình 3.4: Phần mềm RoboMongo 22

Hình 3.5: Phần mềm MongoBooster 22

Hình 3.6: Cơ chế tạo chỉ mục trong MongoDB 24

Hình 3.7: Mô phỏng quá trình tạo chỉ mục 25

Hình 3.8: Cơ chế tìm kiếm trong MongoDB 26

Hình 3.9: Mô phỏng quá trình tìm kiếm 27

Hình 3.10: Tái xây dựng thành công MongoDB 34

Hình 3.11: Kết nối thành công tới MongoDB 35

Hình 3.12: Kết nối không thành công tới MongoDB 35

Hình 4.1: Tạo chỉ mục văn bản thành công với ngôn ngữ tiếng Việt trong phiên bản cải tiến 37

Hình 4.2: Phiên bản gốc không hỗ trợ tạo chỉ mục với ngôn ngữ tiếng Việt 38

Hình 4.3: Tìm kiếm văn bản với ngôn ngữ tiếng Việt trong phiên bản cải tiến 38 Hình 4.4: Tìm kiếm không thành công với ngôn ngữ tiếng Việt trong phiên bản gốc 39

Hình 5.1: Giao diện chính của chương trình demo 54

Hình 5.2: Chưa hoặc không nhập nội dung tìm kiếm 56

Hình 5.3: Tìm kiếm với ngôn ngữ tiếng Việt 57

Hình 5.4: Tìm kiếm với ngôn ngữ tiếng Anh 58

Hình 5.5: Tìm kiếm với các tùy chọn 59

Trang 10

Hình 5.6: Stop words ngôn ngữ tiếng Việt 59

Hình 5.7: Stop words ngôn ngữ tiếng Anh 60

Hình 5.8: Xem nội dung tập tin video 60

Hình 5.9: Xem nội dung tập tin hình ảnh 61

Trang 11

DANH MỤC BIỂU ĐỒ

Biểu đồ 4.1: So sánh thời gian tạo chỉ mục giữa hai phiên bản 41Biểu đồ 4.2: Thời gian tạo chỉ mục trung bình giữa hai phiên bản 41Biểu đồ 4.3: So sánh kích thước chỉ mục văn bản giữa hai phiên bản 42Biểu đồ 4.4: So sánh thời gian tìm kiếm với ngôn ngữ tiếng Anh và thời gian tìm kiếm với ngôn ngữ tiếng Việt khi chỉ mục được tạo với ngôn ngữ tiếng Anh 46Biểu đồ 4.5: Thời gian tìm kiếm trung bình với ngôn ngữ tiếng Anh và ngôn ngữ tiếng Việt khi chỉ mục được tạo với ngôn ngữ tiếng Anh 47Biểu đồ 4.6: Số lượng kết quả trả về khi tìm kiếm với ngôn ngữ tiếng Anh và tìm kiếm với ngôn ngữ tiếng Việt khi chỉ mục được tạo với ngôn ngữ tiếng Anh 47Biểu đồ 4.7: So sánh thời gian tìm kiếm với ngôn ngữ tiếng Anh và thời gian tìm kiếm với ngôn ngữ tiếng Việt khi chỉ mục được tạo với ngôn ngữ tiếng Việt 50Biểu đổ 4.8: Thời gian tìm kiếm trung bình với ngôn ngữ tiếng Anh và ngôn ngữ tiếng Việt khi chỉ mục được tạo với ngôn ngữ tiếng Việt 50Biểu đồ 4.9: Số lượng kết quả trả về khi tìm kiếm với ngôn ngữ tiếng Anh và tìm kiếm với ngôn ngữ tiếng Việt khi chỉ mục được tạo với ngôn ngữ tiếng Việt 51

Trang 12

Chương 1 – Giới thiệu

1.1 Tổng quan

1.1.1 Cơ sở dữ liệu lớn và NoSQL

Trong những năm qua, sự phát triển của Internet và công nghệ hiện đại đã kéo theo sự ra đời của hàng loại các định dạng dữ liệu mới, đặc biệt là các loại dữ liệu đa phương tiện như âm thanh, hình ảnh chất lượng cao và các loại dữ liệu phi cấu trúc như dữ liệu thông tin vị trí địa lý – GIS, dữ liệu phiên làm việc người dùng, dữ liệu thông tin hoạt động của thiết bị phần cứng, dữ liệu động cơ máy bay, dữ liệu cảm biến, Cùng với đó là sự tương tác với hàng trăm triệu thậm chí hàng tỷ người dùng Điều này dẫn đến việc các máy chủ phải thực hiện một lượng vô cùng lớn các lệnh đọc ghi tại cùng một thời điểm, đồng thời phải lưu trữ lượng dữ liệu lên đến hàng trăm Terabyte mỗi ngày Những hệ thống máy chủ sử dụng CSDL quan hệ không còn đáp ứng được những đòi hỏi này do những hạn chế của chúng vì vậy cần phải có một

hệ CSDL khác phù hợp hơn và đó là lý do NoSQL ra đời

NoSQL là thuật ngữ chung cho các hệ CSDL không sử dụng mô hình dữ liệu quan hệ Nó có thể được hiểu là “No Relation SQL” (SQL không quan hệ) hoặc phổ dụng hơn là “Not Only SQL” (không chỉ là SQL) Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ CSDL mới: một thế hệ CSDL không ràng buộc, phân tán, nguồn

mở, khả năng mở rộng theo chiều ngang, có thể lưu trữ, xử lý từ một lượng rất nhỏ cho tới hàng petabytes dữ liệu trong hệ thống có độ chịu tải, chịu lỗi cao với những đòi hỏi về tài nguyên phần cứng thấp Một số đặc điểm nhận dạng cho thế hệ CSDL mới này bao gồm: schema-free, hỗ trợ mở rộng dễ dàng, API đơn giản, nhất quán cuối (eventual consistency), không giới hạn không gian dữ liệu, Tính đến thời điểm hiện tại có khoảng 150 loại cơ sở dữ liệu NoSql chia làm các loại: Wide Column Store/Column Families, Key-Value Store/Tuple store, Document Store, Graph Database Tuy cùng mang những đặc điểm chung của NoSQL nhưng mỗi CSDL NoSQL cũng có những đặc điểm riêng, và vì thế thường được dùng cho những dự án khác nhau

Trang 13

1.1.2 Hệ CSDL MongoDB

Một trong số những hệ CSDL NoSQL phổ biến nhất hiện nay là MongoDB [9] MongoDB được viết bằng ngôn ngữ C++, có khả năng mở rộng tốt, hiệu suất cao, mã nguồn mở và hướng văn bản (Document Store), thích hợp cho các ứng dụng tầm trung trở lên Nếu tỉ lệ lượng dữ liệu ghi vào CSDL của ứng dụng lớn hơn lượng đọc thì đây càng là lựa chọn hợp lý Hệ CSDL MongoDB được sử dụng rất rộng rãi trên thế giới với các tập đoàn, công ty tiêu biểu như: Google, Facebook, Adobe, SourceForce, Ở Việt Nam hiện nay, cùng với xu hướng phát triển của Big data và NoSQL, một

số doanh nghiệp cũng đã sử dụng MongoDB cho việc lưu trữ và thao tác dữ liệu của

mình như FPT, VTC, VinaGame,

Giống như hầu hết các hệ CSDL khác, MongoDB cũng sử dụng chỉ mục để tăng hiệu quả truy vấn Chỉ mục giữ vai trò cực kỳ quan trọng trong các thao tác đọc, ghi của các hệ CSDL nói chung và hệ CSDL MongoDB nói riêng Nếu không dùng chỉ mục, khi tìm một đối tượng trong một tập hợp thì MongoDB phải duyệt qua tất cả các đối tượng trong tập hợp đó cho đến khi tìm thấy đối tượng thỏa mãn yêu cầu, việc làm này thường mất rất nhiều thời gian, đặc biệt là với tập hợp lớn Ngược lại, nếu sử dụng chỉ mục thì MongoDB sẽ chỉ cần tìm kiếm trên chỉ mục (dựa trên một số thuật toán tìm kiếm) để xác định đối tượng cần tìm Như vậy, chỉ mục là một trong những yếu tố quan trọng hàng đầu ảnh hưởng đến hiệu suất của MongoDB Ngay từ những phiên bản đầu tiên, MongoDB đã hỗ trợ nhiều loại chỉ mục khác nhau như Default (_id), Single Field, Compound, MultiKey, GeoSpatial, Hash Đến phiên bản 2.6, MongoDB chính thức đưa thêm chỉ mục văn bản (Text Index) và tìm kiếm toàn văn

(Full Text Search) vào sản phẩm của mình

Tìm kiếm toàn văn là kỹ thuật tìm kiếm vô cùng linh hoạt, hiệu quả và nhanh chóng, được hỗ trợ trong hầu hết các CSDL Việc tìm kiếm được thực hiện chủ yếu dựa trên chỉ mục văn bản của các văn bản cần tìm (bản chất là tập chỉ mục nghịch đảo – Inverted Index) Đối với hệ CSDL xử lý dữ liệu lớn như MongoDB thì việc xây

dựng chỉ mục văn bản và tìm kiếm toàn văn lại càng đóng vai trò quan trọng hơn

Hiện nay, tại thời điểm xây dựng luận văn, MongoDB phát hành phiên bản 3.2 mới chỉ hỗ trợ 15 ngôn ngữ trong việc tạo chỉ mục văn bản mà không có ngôn ngữ tiếng Việt trong khi cũng không hỗ trợ các trình cắm giúp người dùng có thể tự bổ

Trang 14

sung do đó tìm kiếm toàn văn dựa trên chỉ mục văn bản với ngôn ngữ mặc định (tiếng Anh) chắc chắn sẽ có những hạn chế đối với dữ liệu văn bản tiếng Việt Đây cũng là bài toán mà luận văn đặt trọng tâm nghiên cứu

1.2 Các công trình nghiên cứu liên quan trong và ngoài nước

1.2.1 Tình hình nghiên cứu trong nước

Theo tìm hiểu của tác giả, việc sử dụng hệ CSDL MongoDB ở Việt Nam còn sơ khai và phần lớn đều dừng lại ở mức ứng dụng, nghĩa là sử dụng hệ CSDL này với các thành phần đã được xây dựng sẵn, mà chưa có nhiều nghiên cứu ứng dụng liên quan đến kiến trúc cũng như cải tiến mã nguồn của nó

1.2.2 Tình hình nghiên cứu trên thế giới

Trên thế giới hiện nay, ngoại trừ các nhà phát triển MongoDB, tác giả cũng chưa tìm thấy nhiều công trình hay tài liệu liên quan đến việc cải tiến MongoDB ở mức thấp Đối với vấn đề hỗ trợ ngôn ngữ trong tạo lập chỉ mục và tìm kiếm toàn văn, do MongoDB đã hỗ trợ tới 15 ngôn ngữ phổ biến nên các nghiên cứu về vấn đề này dường như cũng không được quan tâm

1.2.3 Nhận xét

Ra đời năm 2007, hệ CSDL MongoDB còn khá non trẻ so với các hệ CSDL khác đặc biệt là các hệ CSDL quan hệ Việc hoàn thiện một hệ sinh thái CSDL nói chung cần rất nhiều thời gian, qua nhiều phiên bản, nhiều nghiên cứu và thử nghiệm Với những ưu điểm vượt trội trong truy vấn và xử lý dữ liệu lớn, MongoDB ngày càng được sử dụng rộng rãi cả trong và ngoài nước Tuy nhiên, trong một số lĩnh vực cụ thể, để ứng dụng MongoDB đạt được hiệu quả hơn nữa thì cần có những cải tiến nhất định Một trong số đó được luận văn lựa chọn nghiên cứu là vấn đề hỗ trợ ngôn ngữ tiếng Việt trong tạo lập chỉ mục và tìm kiếm toàn văn

1.3 Mục tiêu của luận văn

Như đã giới thiệu, một trong những hạn chế của MongoDB là chưa hỗ trợ ngôn ngữ tiếng Việt trong xây dựng chỉ mục văn bản và tìm kiếm toàn văn Để giải quyết vấn đề này đồng thời nâng cao hiệu quả tìm kiếm trong MongoDB đối với ngôn ngữ tiếng Việt, luận văn hướng đến các mục tiêu sau đây:

Trang 15

- Tìm hiểu cơ chế lập chỉ mục văn bản và tìm kiếm trong MongoDB

- Đề xuất giải pháp cài đặt ngôn ngữ tiếng Việt trong MongoDB để tăng hiệu quả tạo chỉ mục văn bản và tìm kiếm toàn văn

- Cài đặt giải pháp, thử nghiệm và đánh giá kết quả

1.4 Phạm vi, đối tượng và phương pháp nghiên cứu

Để đạt được mục tiêu đặt ra, luận văn xác định rõ phạm vi, đối tượng cũng như phương pháp nghiên cứu

1.4.1 Phạm vi

Phạm vi nghiên cứu của luận văn là hệ CSDL MongoDB, một trong những hệ CSDL NoSQL được sử dụng phổ biến nhất hiện nay Phiên bản MongoDB và mã nguồn sử dụng trong luận văn là phiên bản 3.2

1.4.2 Đối tượng

Đối tượng nghiên cứu chủ yếu của luận văn là chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB Hướng tới mục tiêu đặt ra, luận văn đi sâu nghiên cứu vai trò của ngôn ngữ đối với chỉ mục văn bản và ảnh hưởng của nó đến kết quả tìm kiếm trong MongoDB từ đó đề xuất việc cài đặt một ngôn ngữ mới để giải quyết bài toán thực tiễn

1.4.3 Phương pháp

Các phương pháp nghiên cứu được sử dụng để thực hiện đề tài:

- Nghiên cứu lý thuyết về chỉ mục văn bản và tìm kiếm toàn văn trong hệ CSDL MongoDB với vai trò là người dùng cuối tại hệ thống trợ giúp trên trang chủ MongoDB [7]

- Thông qua trang chủ MongoDB và tham khảo cộng đồng Mongo, tìm hiểu kiến trúc từ tổng thể tới chi tiết từ đó xác định được vị trí, vai trò và cơ chế hoạt động của chỉ mục văn bản cũng như mối tương quan giữa nó với các thành phần khác trong

hệ thống đồng thời cũng tìm hiểu cơ chế tìm kiếm văn bản dựa vào chỉ mục trong hệ thống MongoDB

Trang 16

- Tham khảo mã nguồn MongoDB [6] để tìm hiểu phương thức mà MongoDB xây dựng chỉ mục văn bản và tìm kiếm toàn văn cũng như vai trò, tầm ảnh hưởng của ngôn ngữ đối với chỉ mục văn bản và tìm kiếm toàn văn

- Xây dựng các thành phần cải tiến liên quan để nhúng vào mã nguồn MongoDB trên cơ sở lý thuyết đã nghiên cứu Tái xây dựng hệ CSDL MongoDB và thử nghiệm

để đánh giá kết quả đạt được nhằm ứng dụng trong thực tiễn

Trang 17

Chương 2 – Chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB

2.1 Khái quát về hệ CSDL MongoDB

Hệ CSDL MongoDB, được phát triển bởi tập đoàn MongoDB, là một hệ thống CSDL miễn phí, nguồn mở, đa nền tảng và hướng văn bản Là một trong những hệ CSDL NoSQL, MongoDB không sử dụng các cấu trúc dữ liệu dạng bảng quan hệ như truyền thống, thay vào đó, nó sử dụng cấu trúc văn bản tựa JSON với lược đồ động (gọi là BSON) giúp tăng hiệu suất, tương tác nhanh và khả năng mở rộng linh hoạt

Một số đặc trưng cơ bản của hệ CSDL MongoDB:

- Mô hình dữ liệu hướng văn bản với lược đồ động

- Hỗ trợ chỉ mục khá đầy đủ, linh hoạt và truy vấn đa dạng

- Cơ chế Auto-Sharding cho phép phân đoạn dữ liệu theo chiều dọc

- Cơ chế sao chép hỗ trợ tính sẵn sàng cao

- Hỗ trợ tìm kiếm toàn văn

- Bảo mật tốt

- Nền tảng các hàm gộp và MapReduce

- Lưu trữ dữ liệu lớn với GridFS

Hệ CSDL MongoDB quản lý các cơ sở dữ liệu và hoạt động trên các khái niệm collection và document

Hình 2.1 giải thích vị trí và mối quan hệ giữa các thành phần database, collection

và document trong hệ CSDL MongoDB

Trang 18

{

name: Tuấn , age: 20, email: tuanvu@gmail.com }

{

name: Hạnh , age: 21, email: hanhle@gmail.com }

{

name: Hùng , age: 18, email: hungngo@gmail.com }

Key-value pair Document Document Document

Hình 2.1: Mô hình cơ sở dữ liệu trong MongoDB

tự nhau hoặc có quan hệ với nhau

2.1.3 Document

Một document trong MongoDB là một tập các cặp khóa – giá trị (key – value) Document có cấu trúc động, nghĩa là, các document khác nhau trong cùng một collection có thể có các trường khác nhau và thậm chí các trường cùng tên có thể có kiểu dữ liệu khác nhau

Trang 19

2.1.4 So sánh một số khái niệm trong CSDL quan hệ và MongoDB

Các đối tượng làm việc trong hệ CSDL quan hệ đã khá quen thuộc với người dùng CSDL Để giải thích rõ hơn về vị trí, vai trò và ý nghĩa của các đối tượng làm việc trong MongoDB, luận văn đưa ra một số so sánh tương quan giữa các đối tượng này với các đối tượng làm việc trong CSDL quan hệ được thể hiện thông qua bảng 2.1

Bảng 2.1: So sánh sự tương quan giữa một số đối tượng trong CSDL quan hệ và

by mongodb itself)

2.2 Chỉ mục

Chỉ mục hỗ trợ việc phân giải các truy vấn hiệu quả hơn Nếu không có chỉ mục, MongoDB phải quét qua mọi document của collection để chọn các document mà kết nối với lệnh truy vấn Việc quét này có thể không hiệu quả và yêu cầu MongoDB xử

lý một số lượng lớn dữ liệu

Chỉ mục là các cấu trúc dữ liệu đặc biệt, lưu giữ một phần nhỏ dữ liệu của collection, giúp việc duyệt và tìm kiếm trên collection dễ dàng hơn Trong MongoDB, chỉ mục được lưu trữ với cấu trúc dữ liệu B-Tree

Trang 20

Một số loại chỉ mục trong MongoDB: default (_id), Single Field, Compound, MultiKey, GeoSpatial, Hash, Text

2.3 Chỉ mục văn bản

2.3.1 Giới thiệu

MongoDB cung cấp chỉ mục văn bản để hỗ trợ cho tìm kiếm toàn văn trong nội dung văn bản lưu trữ Chỉ mục văn bản có thể bao gồm các trường dữ liệu kiểu chuỗi hoặc mảng chuỗi bất kỳ

2.3.2 Tạo lập chỉ mục văn bản

Trong MongoDB, một collection chỉ có nhiều nhất một chỉ mục văn bản

2.3.2.1 Chỉ mục trên một trường dữ liệu (Indexing a Single Field)

MongoDB sử dụng phương thức db.collection.createIndex() để tạo chỉ mục văn bản Cú pháp đơn giản để chỉ mục một trường kiểu chuỗi bao gồm tên trường và chữ “text” trong tham số như sau:

db.[Tên_Collection].createIndex({tên_trường: “text“})

2.3.2.2 Chỉ mục trên nhiều trường dữ liệu (Compound Indexing)

MongoDB cũng hỗ trợ chỉ mục trên nhiều trường kiểu chuỗi theo cú pháp: db.[Tên_Collection].createIndex(

{

tên_trường_1:“text“,

tên_trường_2: “text“

})

2.3.2.3 Chỉ mục trên toàn văn bản (Wildcard Indexing)

MongoDB hỗ trợ sử dụng ký tự đại diện khi tạo lập một chỉ mục văn bản cho nhiều trường Với ký tự đại diện trong cú pháp tạo chỉ mục, MongoDB sẽ lập chỉ mục cho tất cả các trường có chứa dữ liệu chuỗi đối với mỗi văn bản trong collection

Cú pháp sử dụng ký tự đại diện trong MongoDB:

db.collection.createIndex( { "$**": "text" } )

Trang 21

Chỉ mục văn bản với ký tự đại diện hỗ trợ tìm kiếm trên tất cả các trường có

dữ liệu kiểu chuỗi Nó đặc biệt hữu ích đối với các dữ liệu phi cấu trúc khi mà nội dung của các trường được lập chỉ mục là không rõ ràng

Ngoài ra, chỉ mục văn bản với ký tự đại diện còn hỗ trợ gán trọng số cho các trường được lập chỉ mục như đã trình bày ở trên và cũng hỗ trợ chỉ mục văn bản tổ hợp

Giá trị trọng số mặc định cho các trường được lập chỉ mục là 1 Để điều chỉnh trọng số này cần chỉ rõ giá trị cho tham số tùy chọn weights trong phương thức db.collection.createIndex() theo cú pháp sau:

Trang 22

}

})

2.3.5 Không phân biệt chữ hoa/thường và dấu phụ

Chỉ mục văn bản phiên bản 3 trong MongoDB không phân biệt chữ hoa/thường

và dấu phụ Ví dụ: các ký tự é, É, e, ê và E khi chỉ mục hóa được MongoDB xem là một trong xử lý của mình

Các phiên bản trước của chỉ mục văn bản chỉ không phân biệt chữ hoa thường cho các ký tự [A-z] Đối với các ký tự khác thì MongoDB vẫn xem chúng là các ký

tự khác nhau

2.3.6 Phân tách các thẻ

Đối với việc thẻ hóa, chỉ mục văn bản phiên bản 3 trong MongoDB sử dụng các

ký tự sau đây để phân tách các thẻ: dấu gạch dưới, dấu gạch ngang, dấu nháy kép, các dấu kết thúc câu và ký tự khoảng trắng

Các phiên bản chỉ mục trước không sử dụng dấu nháy kép làm dấu phân tách thẻ

2.3.7 Phần tử chỉ mục

Bộ tạo chỉ mục văn bản thực hiện việc thẻ hóa và xác định từ gốc của các từ trong các trường dữ liệu được lập chỉ mục để tạo ra các phần tử chỉ mục “Từ” không lặp trong nội dung mỗi trường này được lưu trữ bởi một phần tử chỉ mục cho mỗi văn bản trong collection Quá trình thẻ hóa và xác định từ gốc của bộ tạo chỉ mục phụ thuộc và từng ngôn ngữ cụ thể được MongoDB hỗ trợ

2.3.8 Các ngôn ngữ được hỗ trợ và stop words

MongoDB hỗ trợ nhiều ngôn ngữ trong tìm kiếm toàn văn Bộ lập chỉ mục văn bản sẽ bỏ qua các stop words và xác định từ gốc của các từ của các trường được lập chỉ mục Các stop words là khác nhau và việc xác định từ gốc cũng khác nhau đối với các ngôn ngữ khác nhau

Danh sách các ngôn ngữ được MongoDB hỗ trợ trong tạo chỉ mục văn bản và tìm kiếm toàn văn được liệt kê trong bảng 2.2

Trang 23

Bảng 2.2: Các ngôn ngữ được hỗ trợ trong quá trình tạo chỉ mục và tìm kiếm văn

bản trong MongoDB

Language Name

ISO 639-1 (Two letter codes)

ISO 636-3 (Three letter codes)

RLP names (Three letter codes)

Trang 24

Chỉ mục văn bản đóng vai trò vô cùng quan trọng trong tìm kiếm toàn văn Nó

có thể bao gồm bất kỳ trường dữ liệu nào có giá trị kiểu chuỗi hoặc mảng các phần

tử kiểu chuỗi

Để thực thi các truy vấn tìm kiếm toàn văn trên một collection, trước hết cần phải lập một chỉ mục văn bản cho collection đó Mỗi collection chỉ có nhiều nhất một chỉ mục văn bản, tuy nhiên, chỉ mục này có thể bao hàm nhiều trường dữ liệu

Sử dụng cú pháp db.collection.createIndex() để tạo lập chỉ mục như

Trang 25

$caseSensitive: <boolean>,

$diacriticSensitive: <boolean>

}

})

Ý nghĩa của các tham số khi sử dụng toán tử $text được mô tả trong bảng 2.3

Bảng 2.3: Các tham số của toán tử $text

Chuỗi văn bản cần tìm MongoDB sẽ thực hiện toán tử tìm kiếm logic OR trên các từ trong văn bản ngoại trừ các cụm từ

$language string

Tùy chọn Ngôn ngữ xác định danh sách stop words và các quy tắc cho việc xác định từ gốc trong quá trình thẻ hóa Nếu không chỉ rõ, giá trị mặc định của trường này là giá trị $language được chỉ ra khi tạo chỉ mục văn bản

Nếu giá trị của trường này nhận giá trị

“none” thì việc tìm kiếm văn bản sẽ bỏ qua danh sách stop words và bỏ qua việc xác định từ gốc

Các ngôn ngữ được MongoDB hỗ trợ được liệt kê trong bảng 2.2

$caseSensitive string

Tùy chọn Cho phép có/không tìm kiếm có phân biệt chữ hoa/thường Giá trị mặc định là false (tính năng mới trong MongoDB - phiên bản 3)

Trang 26

Tham số Kiểu dữ liệu Mô tả

$diacriticSensitive boolean

Tùy chọn Cho phép có/không tìm kiếm có phân biệt dấu/không dấu (chỉ áp dụng cho phiên bản 3 của chỉ mục văn bản) Giá trị mặc định là false (tính năng mới trong MongoDB - phiên bản 3)

Trang 27

2.4.5 Sắp xếp

Mặc định, kết quả trả về của truy vấn trong MongoDB không được sắp xếp Tuy nhiên, tìm kiếm toàn văn có tính toán mức độ phù hợp của mỗi văn bản đối với chuỗi tìm kiếm Để sắp xếp kết quả theo mức độ phù hợp khi tìm kiếm toàn văn, cần sử dụng từ khóa $meta như cú pháp sau đây:

2.5 Một số hạn chế của chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB

Chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB là một công cụ rất mạnh

mẽ, linh hoạt và hiệu quả Nó cung cấp khả năng tìm kiếm nhanh với mức độ phù hợp là khá tốt Tuy nhiên, bên cạnh những ưu điểm đã được khẳng định trong thực

tế, nó cũng có những hạn chế nhất định

Một số hạn chế của chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB tính đến phiên bản 3.2 như sau:

Trang 28

- Chỉ mục văn bản không hỗ trợ giao tiếp theo dạng trình cắm (plugin) để cho phép người dùng có thể tự định nghĩa các stemmer hay stop words là những thứ phụ thuộc vào ngôn ngữ của người dùng

- Chưa hỗ trợ đầy đủ các ngôn ngữ trong đó có ngôn ngữ tiếng Việt

- Chưa hỗ trợ các đặc trưng như tìm kiếm dựa trên các từ đồng nghĩa, các từ tương

tự

- Chưa quan tâm đến vị trí của các từ trong chỉ mục cũng như tìm kiếm

Thật không may, một trong những hạn chế của chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB lại liên quan đến ngôn ngữ tiếng Việt Để tăng hiệu quả ứng dụng MongoDB trong thực tiễn tại Việt Nam với phần lớn các cơ sở dữ liệu sử dụng ngôn ngữ tiếng Việt, luận văn tập trung nghiên cứu và đề xuất giải pháp để khắc phục hạn chế này

Trang 29

Chương 3 – Cải tiến chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB

3.1 Một số khái niệm

3.1.1 Stop words

Stop words là những từ quá phổ biến, quá chung chung trong một ngôn ngữ nào

đó Để tiết kiệm không gian lưu trữ, gia tăng tốc độ tìm kiếm và nâng cao mức độ phù hợp của kết quả tìm kiếm, các stop words thường được lọc ra khi tìm kiếm cũng như khi lập chỉ mục văn bản [1][2][3][10]

Một số ví dụ về stop words:

- Trong tiếng Việt: do, gì, rồi, rằng, thì, là, mà,…

- Trong tiếng Anh: a, the, an, about, as,…

Trong kỹ thuật lập chỉ mục văn bản và tìm kiếm toàn văn phiên bản 3, MongoDB

hỗ trợ stop words cho 15 ngôn ngữ (xem mục 2 phần phụ lục)

3.1.2 Stemming

Trong tìm kiếm văn bản, nhu cầu so sánh các từ (token) với nhau là hết sức cần thiết Việc so sánh này tưởng chừng đơn giản bằng cách dùng toán tử bằng (“==”) để kiểm tra nhưng thực tế thì không phải như vậy Đối với một số ngôn ngữ, tiêu biểu là tiếng Anh, mỗi từ có thể có nhiều biến thể khác nhau phụ thuộc vào nhiều yếu tố chẳng hạn như biến thể theo ngôi, theo thì,… Ví dụ, các từ “walked”, “walking”,

“walks” đều là biến thể của từ “walk” và có ý nghĩa là “đi bộ” Vậy làm cách nào để

so sánh các từ như vậy với nhau? Để giải quyết vấn đề này có hai kỹ thuật thường được sử dụng là stemming và lemmatization [2] Tuy có một số nhược điểm ảnh hưởng đến tính chính xác nhưng do có tốc độ xử lý nhanh và kết quả là chấp nhận được nên kỹ thuật stemming được dùng rất phổ biến trong xử lý ngôn ngữ tự nhiên

và nó cũng được lựa chọn để sử dụng trong MongoDB

Như vậy có thể hiểu, stemming là kỹ thuật dùng để biến đổi một từ (token) về dạng gốc của nó tùy theo ngôn ngữ cụ thể

Trang 30

3.2 Mã nguồn, môi trường và công cụ nghiên cứu

3.2.1 Bản quyền và địa chỉ tải mã nguồn MongoDB

3.2.1.1 Bản quyền nguồn mở

Mã nguồn MongoDB được phát hành theo giấy phép nguồn mở GNU AGPL 3.0 Nội dung cơ bản của giấy phép này về quyền sử dụng phần mềm GNU như sau:

- Tự do chạy chương trình cho bất cứ mục đích nào

- Tự do tìm hiểu cách hoạt động của chương trình và tự do sửa đổi nó

- Tự do tái phân phối bản sao

- Tự do cải tiến chương trình và phát hành những gì cải tiến ra cộng đồng Với việc phát hành là phần mềm GNU, mã nguồn MongoDB được phép tự

do chỉnh sửa, tái phân phối, cải tiến và phát hành những cải tiến ra cộng đồng do đó những nghiên cứu trình bày trong luận văn có liên quan đến việc sửa đổi mã nguồn MongoDB là hoàn toàn hợp lệ

3.2.1.2 Địa chỉ tải mã nguồn MongoDB

Mã nguồn được tải về tại trang chủ MongoDB [5] hoặc có thể tải về tại trang quản lý mã nguồn Gibhub [6] Luận văn sử dụng phiên bản mã nguồn 3.2.9 do MongoDB phát hành ngày 16 tháng 8 năm 2016

Trang 31

3.2.2 Cấu trúc tổng thể thư mục mã nguồn MongoDB

[MongoDB Source]

mongo third_party

[Thư mục khác]

libstemmer_c [Thư mục khác]

Thư mục chứa các tập tin mã nguồn luận văn tập trung nghiên cứu Các thư mục liên quan

Hình 3.1: Tổng thể thư mục mã nguồn MongoDB

- Thư mục [MongoDB Source]\mongo\db\fts chứa các tập tin liên quan đến chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB Đây cũng là thư mục mà luận văn tập trung nghiên cứu

- Thư mục [MongoDB Source]\thirt_party\libstemmer_c chứa các tập tin liên quan đến kỹ thuật stemming như đã giới thiệu ở mục 3.1.2

- Các thư mục [MongoDB Source]\thirt_party\[Thư mục khác] là các thư mục chứa các tập tin liên quan đến các thành phần khác của toàn bộ hệ CSDL MongoDB

Mã nguồn MongoDB được viết bởi C/C++ nên hầu hết các tập tin trong các thư mục nói trên đều có phần mở rộng là c, cpp hoặc h

Trang 32

3.2.3 Môi trường và công cụ nghiên cứu

Trong quá trình nghiên cứu, tìm hiểu mã nguồn MongoDB, tác giả sử dụng môi trường Microsoft Windows 8.1 và các công cụ chủ yếu sau đây:

- Microsoft Visual Studio 2015: Môi trường lập trình tích hợp của hãng Microsoft

Hình 3.2: Mã nguồn MongoDB được mở trên MS Visual Studio 2015

- Mongo Shell: công cụ tương tác với MongoDB (cũng là một thành phần trong MongoDB)

Hình 3.3: Công cụ Mongo Shell

Trang 33

- RoboMongo 0.9.0 RC4: công cụ tương tác với MongoDB với giao diện trực quan

Hình 3.4: Phần mềm RoboMongo

- MongoBooster: công cụ tương tác với MongoDB với giao diện trực quan và các tính năng mạnh mẽ như import, export, code intellisense, …

Hình 3.5: Phần mềm MongoBooster

Trang 34

Ngoài ra, trong quá trình nghiên cứu thử nghiệm, các công cụ khác như Python 2.7, SCons 2.3 cũng thường xuyên được sử dụng

3.3 Cơ chế xây dựng chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB 3.3.1 Cơ chế xây dựng chỉ mục

3.3.1.1 Các bước xây dựng chỉ mục

Sau khi nghiên cứu tập tin mã nguồn fts_unicode_tokenizer.cpp và một số tập tin mã nguồn khác có liên quan trong thư mục [MongoDB Source]\mongo\db\fts [6], tác giả xác định MongoDB thực hiện việc tạo chỉ mục thông qua các bước cơ bản như sau:

Bước 1: Chuỗi văn bản đầu vào

Bước 2: Thẻ hóa (tokenization) chuỗi đầu vào thành các từ (token) bằng cách

sử dụng các ký tự phân tách

Bước 3: Kiểm tra ngôn ngữ và lọc các từ dựa vào danh sách stop words tương

ứng với ngôn ngữ

Bước 4: Kiểm tra ngôn ngữ và tìm từ gốc bằng cách sử dụng kỹ thuật

stemming tương ứng với ngôn ngữ

Bước 5: Lập chỉ mục với khóa là các từ, giá trị là các document chứa chuỗi

đầu vào tương ứng

Trên thực tế, quá trình tạo chỉ mục còn thêm các bước nhỏ khác như kiểm tra trùng lặp, biến đổi chữ hoa/thường, bỏ dấu,… Tuy nhiên, các bước này được giữ nguyên, không đóng góp vai trò trong giải pháp cải tiến và để cho đơn giản nên tác giả chỉ giới thiệu các bước quan trọng đối với giải pháp của mình

Quá trình trên được minh họa trong hình 3.6

Trang 35

Kết quả (KQ) sau khi thực hiện từng bước như sau:

- Sau khi thẻ hóa: KQ(A B C E F H M N O Z)

- Sau khi lọc stop words: KQ(A B F M O Z)

- Sau khi tìm từ gốc: KQ(A’ B F M’ O Z)

- Chỉ mục được tạo: {A’:[D1, D2], B:[D1], F:[D1], M’:[D2], O:[D1, D2, D3], Z[D3]}

Hình 3.7 giúp hình dung rõ hơn quá trình thực hiện

Trang 36

D1: A B C E F H O D2: A C M N O D3: O Z

Bước 1: Chuỗi văn bản tìm kiếm đầu vào

Bước 2: Thẻ hóa (tokenization) chuỗi đầu vào thành các từ (token) bằng cách

sử dụng các ký tự phân tách

Bước 3: Kiểm tra ngôn ngữ và lọc các từ dựa vào danh sách stop words tương

ứng với ngôn ngữ

Bước 4: Kiểm tra ngôn ngữ và tìm từ gốc bằng cách sử dụng kỹ thuật

stemming tương ứng với ngôn ngữ

Bước 5: Tìm kiếm trong chỉ mục và đưa ra kết quả

Quá trình trên được minh họa trong hình 3.8

Trang 37

Kết quả (KQ) sau khi thực hiện từng bước như sau:

- Sau khi thẻ hóa: KQ(A C M N)

- Sau khi lọc stop words: KQ(A M)

- Sau khi tìm từ gốc: KQ(A’ M’)

- Tìm kiếm KQ trong tập chỉ mục và đưa ra kết quả: {D1, D2}

Quá trình tìm kiếm được giải thích rõ hơn bởi hình 3.9

Trang 38

Hình 3.9: Mô phỏng quá trình tìm kiếm

3.4 Vai trò của stop words và stemming đối với quá trình xây dựng chỉ mục văn bản và tìm kiếm toàn văn

Như đã trình bày ở mục 3.3, trong cả hai quá trình xây dựng chỉ mục văn bản và tìm kiếm toàn văn trong MongoDB đều sử dụng stop words và kỹ thuật stemming

3.4.1 Vai trò của stop words

Từ sơ đồ ở các hình 3.6, hình 3.8 và các ví dụ, luận văn đưa ra một số nhận xét sau đây về vai trò và tầm ảnh hưởng của stop words đối với việc xây dựng chỉ mục văn bản và tìm kiếm toàn văn:

- Nếu danh sách các từ trong stop words lớn thì số từ bị loại bỏ sẽ nhiều và do đó dẫn đến kích thước chỉ mục sẽ giảm do lọc bỏ nhiều từ trong khi hiệu suất tạo chỉ mục và tìm kiếm tăng do không gian tìm kiếm nhỏ lại

- Ngược lại, nếu danh sách các từ trong stop words nhỏ thì số từ bị loại bỏ ít và

do đó dẫn đến kích thước chỉ mục sẽ tăng do ít từ bị lọc bỏ, hiệu suất tạo chỉ mục và tìm kiếm giảm do không gian tìm kiếm tăng lên

Ngày đăng: 16/08/2020, 11:00

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Cam-Tu Nguyen, Xuan-Hieu Phan and Thu-Trang Nguyen (2010), JVnTextPro: A Java-based Vietnamese Text Processing Tool, truy cập ngày 21 tháng 8 năm 2016, http://jvntextpro.sourceforge.net/ Link
4. MongoDB Inc (2016), Build Mongodb From Source, MongoDB Inc, truy cập ngày 20 tháng 8 năm 2016, https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source Link
5. MongoDB Inc (2016), MongoDB Download Center, MongoDB Inc, truy cập ngày 20 tháng 8 năm 2016, https://www.mongodb.com/download-center Link
6. MongoDB Inc (2016), MongoDB Source Code (Master Branch), MongoDB Inc, truy cập ngày 20 tháng 8 năm 2016, https://github.com/mongodb/mongo Link
7. MongoDB Inc (2016), The MongoDB 3.2 Manual, MongoDB Inc, truy cập ngày 16 tháng 8 năm 2016, https://docs.mongodb.com/manual/ Link
9. SolidIT Company (2016), DB-Engines Ranking, SolidIT Company, truy cập ngày 06 tháng 9 năm 2016, http://db-engines.com/en/ranking Link
2. Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze (2008), An Introduction to Information Retrieval. ISBN 978-0-521-86571-5, Cambridge University Press Khác
3. Craig Macdonald Iadh Ounis, Vassilis Plachouras Ian Ruthven, RyenW. White (Eds.) (2008), Advances in Information Retrieval. In Proceedings of the 30th European Conference on IR Research (ECIR 2008 Glasgow), LNCS 4956, ISBN 978-3-540-78645-0, Springer Berlin, Heidelberg, NewYork, 2008, pp. 222-233 Khác
8. Nguyễn Thị Minh Tâm (2014), Các vấn đề xử lý tiếng Việt để nâng cao hiệu năng của công cụ tìm kiếm, luận văn thạc sĩ ngành ngôn ngữ học, Trường Đại học Khoa học Xã hội và Nhân văn, Đại học Quốc gia Hà Nội Khác
10. Trong Nhan PHAN, Josef Küng, Tran Khanh DANG (2014), An Adaptive Similarity Search in Massive Datasets. Transactions on Large-Scale Data - and Knowledge-Centered Systems XXIII - Selected Papers from FDSE 2014. Lecture Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w