Tải bản đầy đủ (.pdf) (98 trang)

Tài liệu Ứng dụng mã nguồn mở Elasticsearch vào hệ thống tìm kiếm danh bạ y tế hiệu quả

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.27 MB, 98 trang )

Tai lieu, luan van1 of 102.

NGUYỄN VĂN THÌN

BỘ GIÁO DỤC
VÀ ĐÀO TẠO

VIỆN HÀN LÂM
KHOA HỌC VÀ CÔNG NGHỆ VN

HỌC VIỆN KHOA HỌC VÀ CƠNG NGHỆ

Nguyễn Văn Thìn
HỆ THỐNG THƠNG TIN

ỨNG DỤNG MÃ NGUỒN MỞ ELASTICSEARCH VÀO
HỆ THỐNG TÌM KIẾM DANH BẠ Y TẾ HIỆU QUẢ

LUẬN VĂN THẠC SĨ NGÀNH MÁY TÍNH

2021
Thành phố Hồ Chí Minh - 2021

khoa luan, tieu luan1 of 102.


Tai lieu, luan van2 of 102.

BỘ GIÁO DỤC
VÀ ĐÀO TẠO


VIỆN HÀN LÂM
KHOA HỌC VÀ CÔNG NGHỆ VN

HỌC VIỆN KHOA HỌC VÀ CƠNG NGHỆ

Nguyễn Văn Thìn

ỨNG DỤNG MÃ NGUỒN MỞ ELASTICSEARCH VÀO HỆ
THỐNG TÌM KIẾM DANH BẠ Y TẾ HIỆU QUẢ

Chuyên ngành : Hệ Thống Thông Tin.
Mã số : 8480104

LUẬN VĂN THẠC SĨ NGÀNH MÁY TÍNH

NGƯỜI HƯỚNG DẪN KHOA HỌC: TS TRẦN TRỌNG TỒN

Thành phố Hồ Chí Minh – 2021
khoa luan, tieu luan2 of 102.


Tai lieu, luan van3 of 102.

i

LỜI CAM ĐOAN
Tôi cam đoan luận văn “Ứng dụng mã nguồn mở ElasticSearch vào hệ thống
tìm kiếm danh bạ y tế hiệu quả” là cơng trình nghiên cứu của riêng tơi dưới sự hướng
dẫn của Thầy TS Trần Trọng Toàn. Sự gần gũi và nhiệt tình hướng dẫn của thầy là
nguồn động lực rất lớn đối với tôi trong suốt thời gian thực hiện.

Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai
công bố trong bất kỳ công trình nào khác.

Thành phố Hồ Chí Minh, ngày

tháng năm 2021

Học viên thực hiện

Nguyễn Văn Thìn

khoa luan, tieu luan3 of 102.


Tai lieu, luan van4 of 102.

ii

LỜI CẢM ƠN
Tôi xin gửi lời cảm ơn sâu sắc đến thầy TS. Trần Trọng Tồn đã tận tình hướng dẫn
và giúp đỡ tơi trong suốt quá trình thực hiện luận văn.
Cảm ơn quý thầy cô Khoa Công Nghệ Thông Tin và Viễn Thông, cũng như các Thầy
Cô của Học Viện Khoa học và Công Nghệ, quý thầy cô tham gia giảng dạy và truyền
đạt kiến thức cho bản thân tơi trong suốt khóa học 2018 – 2020.
Cho phép tôi gửi lời cảm ơn tới các bạn, đồng nghiệp đã thường xuyên quan tâm,
giúp đỡ, chia sẽ kinh nghiệm trong suốt thời gian học tập, nghiên cứu tại Học viện
cũng như trong suốt quá trình thực hiện luận văn.
Tôi xin bày tỏ sự biết ơn sâu sắc đến cha, mẹ, vợ, những người thân trong gia đình đã
ln ở bên tơi, động viên, dành cho tơi những gì tốt đẹp nhất trong suốt q trình thực
hiện luận văn này.

Cuối cùng tôi xin chân thành cảm ơn Công ty Cổ phần MediHub đã tạo điều kiện
giúp tôi thực hiện tốt luận văn.
Trân trọng cảm ơn!

khoa luan, tieu luan4 of 102.


Tai lieu, luan van5 of 102.

iii

MỤC LỤC
LỜI CAM ĐOAN ........................................................................................................ i
LỜI CẢM ƠN .............................................................................................................ii
MỤC LỤC ................................................................................................................. iii
DANH MỤC VIẾT TẮT ........................................................................................... iv
DANH MỤC CÁC BẢNG......................................................................................... vi
DANH MỤC CÁC HÌNH MINH HỌA ...................................................................vii
MỞ ĐẦU ..................................................................................................................... 1
CHƯƠNG 1 - TỔNG QUAN VỀ HỆ THỐNG TÌM KIẾM THƠNG TIN ............... 4
1.1 Khái niệm về tìm kiếm thơng tin ....................................................................... 4
1.2 Khái niệm về hệ thống tìm kiếm thơng tin ........................................................ 6
1.2.1 Khái niệm về hệ thống tìm kiếm thơng tin .................................................. 6
1.2.2 Các bộ phận cấu thành hệ thống tìm kiếm thơng tin ................................... 6
CHƯƠNG 2 - GIỚI THIỆU BÀI TOÁN VÀ LỰA CHỌN CƠNG NGHỆ .............. 9
2.1 Giới thiệu bài tốn ............................................................................................. 9
2.2 Phương pháp giải quyết ..................................................................................... 9
2.3 Tổng quan ElasticSearch ................................................................................. 10
2.3.1 Khái niệm về ElasticSearch ....................................................................... 10
2.3.2 Các khái niệm cần biết trong ElasticSearch .............................................. 13

2.3.3. Analyzers và mô hình truy hồi thơng tin của ElasticSearch .................... 21
2.3.4. Query DSL (domain- Specific Language) trong ElasticSearch .............. 29
2.3.5 Mơ hình truy hồi thông tin của ElasticSearch ........................................... 36
CHƯƠNG 3. THỰC NGHIỆM XÂY DỰNG WEBSITE TÌM KIẾM DANH BẠ Y
TẾ .............................................................................................................................. 45
3.1 Phân tích .......................................................................................................... 45
3.2 Thiết kế ............................................................................................................ 46
3.3 Cài đặt .............................................................................................................. 55
3.4 Giao diện .......................................................................................................... 55
khoa luan, tieu luan5 of 102.


Tai lieu, luan van6 of 102.

iv

3.4.1. Giao diện cho người sử dụng ................................................................... 55
3.4.2. Giao diện cho người quản trị .................................................................... 64
3.5 Đánh giá và thử nghiệm ................................................................................... 66
3.5.1. Mô hình kiến trúc ứng dụng thử nghiệm .................................................. 66
3.5.2. Kịch bản và kết quả .................................................................................. 67
3.5.3 Đánh giá kết quả nghiên cứu ..................................................................... 70
CHƯƠNG 4. KẾT LUẬN......................................................................................... 72
DANH MỤC TÀI LIỆU THAM KHẢO .................................................................. 73

khoa luan, tieu luan6 of 102.


Tai lieu, luan van7 of 102.


v

DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
CNTT

Công nghệ thông tin

CSDL

Cơ sở dữ liệu

Server

Máy chủ

Document

Tài liệu

Index

Chỉ mục

ES

ElasticSearch

EHR

Hồ sơ sức khỏe điện tử


IR

Information Retrieval

Shard

Phân đoạn

Query

Truy vấn

DSL

domain- Specific Language

URL

Địa chỉ website

Term

Từ khóa tìm kiếm

Boost

Tăng cường

API


Application Programming Interface

RESTful API

Một tiêu chuẩn trong việc thiết kế API

row

Dòng

table

bảng

Unicast

là 1 thuật ngữ được sử dụng trong mạng máy tính
để mơ tả cách thức truyền tin được gửi từ 1 điểm
đến 1 điểm khác

link

Liên kết

khoa luan, tieu luan7 of 102.


Tai lieu, luan van8 of 102.


vi

DANH MỤC CÁC BẢNG
Bảng 1: Số liệu mapping các từ khóa. ...................................................................... 53
Bảng 2: Kịch bản tìm kiếm. ....................................................................................... 68

khoa luan, tieu luan8 of 102.


Tai lieu, luan van9 of 102.

vii

DANH MỤC CÁC HÌNH MINH HỌA
Hình 1: Lịch sử hình thành cơng ty ElasticSearch ................................................... 10
Hình 2: Các tập đồn sử dụng ElasticSearch ........................................................... 11
Hình 3: Các đối thủ của ElasticSearch ..................................................................... 11
Hình 4: Bảng so sánh các dịch vụ ............................................................................. 12
Hình 5: Hệ thống phân tán của ElasticSearch ......................................................... 13
Hình 6: Các khái niệm cần biết trong ElasticSearch................................................ 13
Hình 7: Index trong ElasticSearch ............................................................................ 14
Hình 8: Sharding trong Index ................................................................................... 15
Hình 9: Primary Shard và Replica Shard ................................................................. 15
Hình 10: quá trình chuyển dữ liệu ............................................................................ 17
Hình 11: Cluster trong ElasticSearch ....................................................................... 18
Hình 12: Ví dụ về sơ đồ cơ sở dữ liệu của Mapping ................................................ 19
Hình 13: Analyzer trong ElasticSearch .................................................................... 21
Hình 14: Kết quả tìm kiếm Match all query.............................................................. 30
Hình 15: Kết quả Match query.................................................................................. 30
Hình 16: Kết quả Match query thêm and .................................................................. 31

Hình 17: Kết quả Match phrase query ...................................................................... 31
Hình 18: Kết quả Match Phrase Prefix Query ......................................................... 32
Hình 19: Kết quả Multi Match Query ....................................................................... 32
Hình 20: Query có các parameters ........................................................................... 33
Hình 21: Query với format ngày ............................................................................... 33
Hình 22: Wildcard Query.......................................................................................... 34
Hình 23: Bool Query ................................................................................................. 34
Hình 24: Fuzzy Query ............................................................................................... 36
Hình 25: B25M .......................................................................................................... 38
Hình 26: BM25 tiệm cận ........................................................................................... 40
Hình 27: BM25 với độ dài trung bình ....................................................................... 41
Hình 28: Mơ hình tìm kiếm văn bản tiếng Việt ......................................................... 46
Hình 29: lược đồ về Analyzer ................................................................................... 47
Hình 30: lược đồ cơ sở dữ liệu Danh bạ y tế ............................................................ 53
Hình 31: Mơ hình cho người sử dụng ....................................................................... 54
Hình 32: giao diện gợi ý khi nhập từ khóa ............................................................... 56
Hình 33: kết quả tìm kiếm có dấu ............................................................................. 56
Hình 34: kết quả tìm kiếm tiếng Việt không dấu ....................................................... 57
khoa luan, tieu luan9 of 102.


Tai lieu, luan van10 of 102.

viii

Hình 35: Kết quả tìm kiếm ........................................................................................ 58
Hình 36: Kết quả theo định vị ................................................................................... 59
Hình 37: Tìm kiếm theo chuyên khoa ........................................................................ 61
Hình 38 thơng tin chi tiết .......................................................................................... 61
Hình 39: thơng tin bản đồ theo địa chỉ của Profile .................................................. 62

Hình 40: nút lưu profile ............................................................................................ 62
Hình 41: hỏi đáp. ...................................................................................................... 63
Hình 42: Thơng tin đã lưu, thích ............................................................................... 63
Hình 43: Trang quản trị Admin ................................................................................ 64
Hình 44: Cập nhật dữ liệu mới ................................................................................. 65
Hình 45: Quản trị tài khoản ...................................................................................... 65
Hình 46 Kiến trúc Mơ hình thử nghiệm .................................................................... 67

khoa luan, tieu luan10 of 102.


Tai lieu, luan van11 of 102.

1

MỞ ĐẦU
Hiện nay sức khỏe đang là mối quan tâm hàng đầu của nhiều người. Ngồi
mong muốn được tiếp cận các thơng tin sức khỏe chính thống - hữu ích để chăm sóc
bản thân và gia đình tốt hơn, nhu cầu tìm kiếm nơi khám chữa bệnh uy tín, bác sĩ giỏi
chun mơn của người dân cũng rất cao. Để đáp ứng nhu cầu này thì cần có các cơng
cụ tìm kiếm nhanh, ngồi hỗ trợ người dân tiếp cận các thông tin cần biết, cịn giúp
chọn lựa được nơi chăm sóc sức khỏe, bác sĩ tốt nhất thơng qua những tính năng
tương tác trên các website trực tuyến.
Song song đó, cùng với sự phát triển của Internet và điện thoại thông minh cho
phép người dùng có thể kết nối mạng ở bất cứ đâu, truy cập hồ sơ bác sĩ/cơ sở khám
chữa bệnh một cách dễ dàng để đánh giá, bình luận… điều này giúp tăng độ tin cậy
và chính xác của các thơng tin trên. Càng ngày, với sự “góp sức” của nhiều người,
những thơng tin ngày càng được hồn thiện và thực sự hữu ích cho người dùng sau.
Tuy nhiên, trong lĩnh vực y tế, việc phân chia các cơ sở khám chữa bệnh, hồ
sơ bác sĩ về chuyên khoa; dịch vụ khám chữa bệnh, địa chỉ, số điện thoại, thời gian

làm việc… sao cho người dùng có thể tìm kiếm một cách dễ dàng – nhanh chóng –
chính xác nhất thực sự là vấn đề nan giải. Các website về lĩnh vực y tế trong nước
như edoctor.io, bacsi247.net … đã có hỗ trợ thơng tin tìm kiếm bác sĩ, phịng khám,
bệnh viện… tuy nhiên việc tìm kiếm tiếng Việt vẫn là vấn đề nan giải và các website
này vẫn chưa đáp ứng được.
Gần đây, nhiều thư viện nguồn mở hỗ trợ mạnh việc tìm kiếm thơng tin nhanh
như Elastic Search, Solr … Điều đặc biệt hơn cả là việc xuất hiện nhiều mã nguồn
mở xử lý ngôn ngữ tiếng Việt do các kỹ sư CNTT hay các nhà khoa học tại Việt Nam
phát triển như underthesea, vn_tokenizer… đã làm cho việc tìm kiếm dữ liệu tiếng
Việt ngày càng chính xác hơn.
Ngồi ra các Website lớn trên thế giới như eBay [1], Vimeo [2] đã sử dụng
ElasticSearch vào việc phát triển hệ thống tìm kiếm của mình, và về lĩnh vực y tế sức khỏe UCLA Health [3] đã sử dụng ElasticSearch vào hệ thống Hồ sơ sức khỏe
điện tử (EHR) để phục vụ cho các Bác sĩ lâm sàng và các nhà nghiên cứu trong việc
tìm kiếm bệnh lý, bao gồm ghi chú lâm sàng, kết quả phịng thí nghiệm, văn bản, lịch
sử khám chữa bệnh của bệnh nhân để giúp chẩn đốn bệnh.
Trong nước, cũng có khá nhiều tác giả quan tâm nghiên cứu về lĩnh vực tìm kiếm
thơng tin như “Hỗ trợ Tìm kiếm Thơng tin, thuộc lãnh vực CNTT trên Internet qua
khoa luan, tieu luan11 of 102.


Tai lieu, luan van12 of 102.

2

từ khóa bằng Tiếng Việt” [4], “Phát Triển hệ truy hồi thông tin tiếng Việt dựa trên
mã nguồn mở” [5]. Tuy nhiên chúng ta vẫn chưa thấy một hệ thống tìm kiếm nào về
danh bạ y tế đáp ứng được nhu cầu của người dân hiện nay, và chúng ta vẫn cịn phụ
thuộc vào cơng cụ tìm kiếm Google nên đơi khi phải mất nhiều thời gian mới tìm thấy
được những thơng tin mà mình cần.
Tính cấp thiết của đề tài:

Từ những khó khăn như phân tích ở trên, yêu cầu cấp thiết là xây dựng một hệ
thống tìm kiếm Tiếng Việt về danh bạ y tế để giúp người dùng dễ dàng tìm kiếm các
thơng tin như: hồ sơ bác sĩ, phịng khám, bệnh viện…đồng thời có thể tiếp cận được
các thơng tin hữu ích về sức khỏe chính thống từ các bác sĩ, chuyên gia y tế, và cũng
chính họ là người sẽ tương tác với các tính năng sẵn có của hệ thống như bình luận,
đánh giá,… làm tăng độ tin cậy của thông tin cho người dùng sau.
Đối tượng và phạm vi nghiên cứu:
Để xây dựng được hệ thống tìm kiếm Tiếng Việt mang tính cấp thiết như đã đề
cập ở trên, đối tượng nghiên cứu được chọn là:
Nghiên cứu dữ liệu và thông tin y tế với nguồn dữ liệu từ hệ thống tìm kiếm cơ
sở y tế của cơng ty MediHub.
Nghiên cứu về tìm kiếm thơng tin, hệ thống tìm kiếm thơng tin và các thành phần
cấu tạo.
Nghiên cứu mã nguồn mở ElasticSearch để ứng dụng vào việc đánh chỉ mục cho
hệ thống tìm kiếm thơng tin.
Nghiên cứu Asp.Net Core, C# để xây dựng một hệ thống tìm kiếm thơng tin hồn
chỉnh và các tính năng tương tác trên danh bạ y tế.
Mục tiêu nghiên cứu:
Để thực hiện thành công, luận văn cần nghiên cứu các nội dung sau:
Nghiên cứu, phân tích, thiết kế và triển khai hệ thống tìm kiếm thơng tin về danh
bạ y tế.
Nghiên cứu các kỹ thuật về truy hồi thông tin và các công nghệ, nền tảng nổi bậc
về các Search Engine, trong đó trọng tâm nghiên cứu ElasticSearch để xây dựng một
ứng dụng tìm kiếm danh bạ y tế.

khoa luan, tieu luan12 of 102.


Tai lieu, luan van13 of 102.


3

Sản phẩm sẽ giúp người dùng dễ dàng tìm kiếm các thơng tin, danh bạ y tế mà
mình cần và tạo các tính năng tương tính tác trên hệ thống để tăng độ tin cậy cho
người dùng sau.
Phương pháp nghiên cứu:
Để đạt được mục tiêu đặt ra, luận văn sử dụng các phương pháp sau:
Thu thập, phân tích và chuẩn hóa dữ liệu danh bạ y tế đã có.
Đánh giá và chọn lọc các thuật tốn, tính năng trong ElasticSearch để làm cho
phần tìm kiếm dữ liệu.
Phân tích và thiết kế hệ thống Tìm kiếm thơng tin, tích hợp ElasticSearch để trả
kết quả tìm kiếm Tiếng Việt chính xác hơn, đồng thời cũng xây dựng các tính năng
tiện ích giúp người dùng dễ dàng tìm kiếm và tương tác trên Website.
Để thực hiện mục tiêu đã đề ra chúng tôi bố cục của luận văn như sau:
Chương 1: Nghiên cứu tổng quan về hệ thống tìm kiếm thơng tin, các thành
phần và ngun lý hoạt động của hệ thống tìm kiếm thơng tin.
Chương 2: Giới thiệu bài tốn và lựa chọn cơng nghệ.
Chương 3: Trên cơ sở nghiên cứu về Hệ thống tìm kiếm thơng tin và mã nguồn
mở ElasticSearch, tôi đề xuất xây dựng thử nghiệm hệ thống tìm kiếm Danh bạ y tế
với hai thành phần chính là: Tạo chỉ mục và Tìm kiếm.

khoa luan, tieu luan13 of 102.


Tai lieu, luan van14 of 102.

4

CHƯƠNG 1 - TỔNG QUAN VỀ HỆ THỐNG TÌM KIẾM
THƠNG TIN


1.1 Khái niệm về tìm kiếm thông tin
Ngày nay sự phát triển mạnh mẽ và phổ biến của công nghệ thông tin, dữ liệu,
văn bản có đến hàng tỉ trang website, song song đó, nhu cầu khai thác thông tin này
để phục vụ công việc là nhu cầu cần thiết và cấp bách. Bất cứ hệ thống nào sau khi
xây dựng đều địi hỏi có hỗ trợ chức năng tìm kiếm, tuy nhiên đối với việc tìm kiếm
nội dung trong văn bản lại là vấn đề lớn. Có những cơng cụ hỗ trợ tìm kiếm thông tin
và hoạt động hiệu quả như Google, Bing, Yahoo, Baidu, Yandex, DuckDuckGo…
tuy nhiên, vì đây là những sản phẩm đã được thương mại hóa như bài báo khoa học
[6] cũng đã đề cập, nên chúng ta không thể biết được các kỹ thuật triển khai bên dưới
cũng như công nghệ ứng dụng của chúng.
Sau đây sẽ là định nghĩa về tìm kiếm thơng tin của một số tác giả [6]
Khái niệm [6]: Tìm kiếm thơng tin (Information Retrieval – IR) là tìm kiếm tài
nguyên (thường là các tài liệu - documents) trên một tập lớn các dữ liệu phi cấu trúc
(thường là văn bản – text) được lưu trữ trên các máy tính nhằm thỏa mãn nhu cầu về
thơng tin [6].
Mục đích cuối cùng trong việc tìm kiếm là đưa ra thơng tin sao cho đúng với
nhu cầu tìm kiếm của người dùng, do đó cần phải có cách lưu trữ thông tin và tổ chức
lại dữ liệu sao cho dễ dàng tìm kiếm và truy xuất nhanh và hiệu quả nhất. Trong việc
tìm kiếm có 2 phần chính:

• Các kỹ thuật để biễu diễn thông tin: bao gồm cách biểu diễn thông tin
nào cần thiết cho việc truy vấn (query) từ nhu cầu người dùng, và các
thông tin nào được chọn (văn bản, tài liệu).

• Các phương pháp so sánh khi biễu diễn thơng tin, nhằm mục đích là
để kiểm tra so sánh tính tốn dữ liệu, sao cho cuối cùng kết quả tính tốn
trả về phải giống với kết quả được mong đợi khi người dùng thực hiện
câu truy vấn.
Việc đánh giá mức độ xử lý khi trả về kết quả trong việc tìm kiếm thơng tin

trong một tập tài liệu và câu truy vấn cho tài liệu đó dựa vào các cách sau:

khoa luan, tieu luan14 of 102.


Tai lieu, luan van15 of 102.

5

• Độ chính xác (Precision): được đo bởi tỉ lệ của tài liệu trả về chính xác
trên tổng tài liệu nhận được [6].
Độ chính xác =

{tài liệu liên quan}  {tài liệu nhận được}
{tài liệu nhận được}

(1)

• Độ bao phủ (Recall): tỉ lệ tài liệu trả về chính xác trên tổng tài liệu có
liên quan [6].

Độ bao phủ =

{tài liệu liên quan}  {tài liệu nhận được}
{tài liệu liên quan}

(2)

• Kết quả sai (fall - out): tỉ lệ tài liệu khơng có liên quan trả về trên tổng
tài liệu không liên quan [6].

Kết quả sai =

{tài liệu không liên quan}  {tài liệu nhận được}
(3)
{tài liệu khơng liên quan}

Ví dụ [6]: trong tập 1000 tài liệu được sử dụng cho tìm kiếm với 200 tài liệu
liên quan đến thông tin “tin học”, một hệ thống tìm kiếm thơng tin “tin học” trả về
được 150 tài liệu, trong đó có 130 tài liệu chính xác. Khi đó:
Độ chính xác =
Độ bao phủ =
Kết quả sai =

khoa luan, tieu luan15 of 102.

{200} ∩ {150}
{150}

{200} ∩ {150}
{200}
{800} ∩ {150}
{800}

=

{130}
≈ 87%
{150}

=


{130}
≈ 65%
{200}

=

{20}
≈ 2.5%
{800}


Tai lieu, luan van16 of 102.

6

1.2 Khái niệm về hệ thống tìm kiếm thơng tin
1.2.1 Khái niệm về hệ thống tìm kiếm thơng tin [7]
Theo Kowalski [8] đã định nghĩa về hệ thống tìm kiếm thơng tin như sau:
“Hệ thống truy tìm thơng tin là một hệ thống có khả năng lưu trữ, truy tìm và
duy trì thơng tin. Thơng tin trong các trường hợp này có thể bao gồm văn bản (bao
gồm cả số liệu ngày tháng), hình ảnh, âm thanh, video và những đối tượng đa phương
tiện khác.”
Gerard Salton [9, 10]: “Hệ thống tìm kiếm thơng tin là một hệ thống thông tin
được sử dụng để lưu trữ các mục thơng tin cần được xử lý, tìm kiếm, truy xuất và trả
về cho người dùng với các yêu cầu khác nhau. Việc truy tìm những thơng tin phụ
thuộc vào tổ chức thông tin được lưu trữ và các phương pháp tìm kiếm nhanh chóng
từ các u cầu, được đánh giá bằng cách so sánh các giá trị của các thuộc tính đối với
thơng tin được lưu trữ và các u cầu về thơng tin.”
Do đó ta có thể tóm lại đơn giản hơn: hệ thống tìm kiếm thơng tin là một hệ

thống thông tin dùng để lưu trữ, xử lý, tìm kiếm và đưa ra các thơng tin cho người sử
dụng. Hệ thống tìm kiếm thơng tin thường thao tác các dữ liệu dạng văn bản và khơng
có giới hạn về nội dung và thông tin trong văn bản.

1.2.2 Các bộ phận cấu thành hệ thống tìm kiếm thông tin [7]
1.2.2.1 Bộ phận thu thập thông tin - Robot
Bộ phận thu thập thông tin [11] là một chương trình chạy tự động dùng duyệt
qua các cấu trúc siêu liên kết (hyperlink) để đi thu thập tài liệu, và một cách đệ quy
nó sẽ nhận về tài liệu có liên kết với tài liệu này, nó sẽ quét để trích xuất tồn bộ
thơng tin của website đó từ tiêu đề, hình ảnh đến từ khóa, các liên kết (link) đến trang
khác ... Dữ liệu sẽ được quét theo thứ tự từ trên xuống dưới từ trái qua phải. Thực tế,
bộ phận thu thập dữ liệu sẽ có những con Robot thu thập dữ liệu, được gọi là spider,
những spider này sẽ truy cập từng trang web, thu thập dữ liệu trên trang đó một cách
âm thầm và nhanh chóng. Sau đó nó lấy dữ liệu và lưu trữ các nội dung từ các trang
web trên Internet.
Bộ phận này có các thành phần chính: một thành phần để theo dõi và phát hiện
các URL mới, hoặc các URL đã thay đổi. Một thành phần dùng để đọc nội dung tài
liệu của tất cả các trang web một cách đệ quy từ một tập các URL đã có, sau đó nó sẽ

khoa luan, tieu luan16 of 102.


Tai lieu, luan van17 of 102.

7

phân tích tài liệu, trích xuất nội dung tài liệu dưới các định dạng như html, pdf,
excel… và lưu trữ về cơ sở dữ liệu thu thập.

1.2.2.2 Bộ phận lập chỉ mục - Index

Hệ thống lập chỉ mục hay còn gọi là hệ thống phân tích và xử lý dữ liệu, thực
hiện việc phân tích và tối ưu hóa tốc độ và hiệu suất trong việc tìm kiếm các tài liệu
có liên quan cho một truy vấn tìm kiếm [11]. Với các từ khố nhập vào của người
dùng nó có thể chỉ rõ các từ khoá nào xuất hiện ở trang nào, địa chỉ nào. Nếu khơng
có chỉ mục, cơng cụ tìm kiếm sẽ qt tất cả các tài liệu trong cơ sở dữ liệu lưu trữ,
địi hỏi thời gian và tài ngun tính tốn đáng kể. Ví dụ [12] như Google là máy tìm
kiếm phổ biến nhất hiện nay, được đồng sáng chế bởi Lary Page và Sergey Brin năm
1997, đi vào hoạt động từ năm 1998. Google hoạt động dựa vào lập trình hệ thống
PageRank (bằng sáng chế năm 1998) và là Search Engine hiện đại nhất ngày nay.
Trung bình, hệ thống PageRank xử lý hơn 3 tỷ truy vấn mỗi ngày, và hàng tỷ thông
tin được xử lý, cập nhật vào hệ thống cơ sở dữ liệu của Google. Với tốc độ xử lý ưu
việt, và luôn phát triển, đổi mới với những thuật tốn chống spam, thao túng kết quả
tìm kiếm. Google luôn mong muốn mang đến những thông tin hữu ích và trải nghiệm
tốt nhất cho người dùng trên toàn thế giới.

1.2.2.3 Bộ phận tìm kiếm thơng tin và Search Engine
Bộ phận này chịu trách nhiệm tìm kiếm các tài liệu từ yêu cầu của người sử
dụng, sau đó trả về danh sách các tài liệu chính xác với yêu cầu nhất, do số lượng các
trang web rất lớn và thông thường người dùng chỉ đưa đưa vào một vài từ khóa trong
câu truy vấn nên tập kết quả thường rất lớn. Tiền xử lý khố tìm kiếm, thực hiện phân
tích từ khố tìm kiếm, xử lý các tốn tử tìm kiếm cơ bản (AND, OR, NOT,...), xử lý
tìm kiếm chính xác và xây dựng câu truy vấn dữ liệu. Vì vậy bộ xếp hạng (Ranking)
có nhiệm vụ sắp xếp các tài liệu này theo mức độ hợp lệ với yêu cầu tìm kiếm và hiển
thị kết quả cho người sử dụng [5].
Search Engine là cụm từ dùng chỉ toàn bộ hệ thống bao gồm bộ thu thập thông
tin, bộ lập chỉ mục và bộ tìm kiếm thơng tin [13]. Các bộ phận này hoạt động liên tục
từ lúc khởi động hệ thống, chúng phụ thuộc lẫn nhau về mặt dữ liệu nhưng độc lập
với nhau về mặt hoạt động.
Nguyên lý hoạt động của Search Engine:
Search Engine điều khiển các robot đi thu thập thông tin trên mạng thông qua

các siêu liên kết (hyperlink). Khi các robot phát hiện ra một website mới, nó gởi tài
liệu (nội dung trong web page) về cho máy chủ (Server) chính để tạo cơ sở dữ liệu
khoa luan, tieu luan17 of 102.


Tai lieu, luan van18 of 102.

8

chỉ mục phục vụ cho nhu cầu tìm kiếm thơng tin [12, 13]. Bởi vì thông tin trên mạng
luôn thay đổi nên các robot phải liên tục cập nhật các website cũ. Mật độ cập nhật
phụ thuộc vào từng hệ thống Search Engine về cách cấu hình thời gian cập nhật. Khi
Search Engine nhận câu truy vấn từ người dùng, nó sẽ tiến hành phân tích, tìm trong
cơ sở dữ liệu chỉ mục và trả về những tài liệu thoả yêu cầu.

khoa luan, tieu luan18 of 102.


Tai lieu, luan van19 of 102.

9

CHƯƠNG 2 - GIỚI THIỆU BÀI TỐN VÀ LỰA CHỌN
CƠNG NGHỆ

2.1 Giới thiệu bài tốn
Từ những khó khăn trong việc tìm kiếm tiếng Việt đã được nêu ở phần mở
đầu, cũng như việc tạo ra một hệ thống tìm kiếm thơng tin về lĩnh vực y tế để đáp
ứng các nhu cầu tìm kiếm của người dùng. Bài toán: “Ứng dụng mã nguồn mở
ElasticSearch vào hệ thống tìm kiếm danh bạ y tế hiệu quả” sẽ giải quyết các vấn

đề sau:
-

Xây dựng một hệ thống tìm kiếm Tiếng Việt về danh bạ y tế để giúp người

-

dùng dễ dàng tìm kiếm các thơng tin như: hồ sơ bác sĩ, phòng khám, bệnh
viện…
Đồng thời người dùng có thể tiếp cận được các thơng tin hữu ích về sức
khỏe chính thống từ các bác sĩ, chuyên gia y tế, và cũng chính họ là người

-

sẽ tương tác với các tính năng sẵn có của hệ thống như bình luận, đánh
giá,…
Tăng độ tin cậy của thơng tin cho người dùng sau.

Luận văn sử dụng thư viện mã nguồn mở ElasticSearch cho phần lập chỉ mục
và tìm kiếm, kết hợp với ngơn ngữ lập trình Web như Asp.Net Core để xây dựng một
hệ thống tìm kiếm thơng tin.

2.2 Phương pháp giải quyết
Để giải quyết được bài toán đã nêu bên trên, chúng tôi đã lựa chọn các phương
pháp sau:
-

Sử dụng mã nguồn mở ElasticSearch cho việc đánh lập chỉ mục.
Nghiên cứu tổng quan về ElasticSearch và kiến trúc của nó để cài đặt và
cấu hình hệ thống phù hợp.

Nghiên cứu Plugin “Vietnamese Analysis Plugin for Elasticsearch” của tác
giả Duy Đỗ [14] để phân tích và tìm kiếm với dữ liệu text là tiếng Việt.
Trong plugin tác giả cũng đã kế thừa và sử dụng lại bộ công cụ tách từ
tiếng Việt “Lê Hồng Phương”, công cụ này sử dụng từ điển và ngram, trong
đó mơ hình ngram được huấn luyện để sử dụng treebank tiếng Việt với độ
chính xác 97% [15]

khoa luan, tieu luan19 of 102.


Tai lieu, luan van20 of 102.

-

10

Nghiên cứu về Analyzer và mơ hình truy hồi thơng tin của ElasticSearch,
sử dụng các Analyzer có sẵn của ElasticSearch hoặc tạo ra các analyzer
mới để tách từ và cấu trúc lại dữ liệu phục vụ cho việc tìm kiếm nhanh và
hiệu quả hơn. Ngồi ra tài liệu [16] cũng đã đề cập sử dụng Analyzer của
ElasticSearch cho việc truy vấn mở rộng (Query Expansion) cũng như tìm
kiếm theo ngữ nghĩa (semantic search).

-

Nghiên cứu về các loại truy vấn trong ElasticSearch để lựa chọn các loại
truy vấn phù hợp cho việc tìm kiếm dữ liệu.

-


Nghiên cứu về truy vấn Geo_Point và cách tổ chức dữ liệu để phục vụ cho
việc tìm kiếm dữ liệu theo tọa độ và đưa ra các kết quả tìm kiếm gần với
vị trí người dùng.

2.3 Tổng quan ElasticSearch
Trong phần này sẽ trình bày tổng quan về mã nguồn mở ElasticSeach và các tính
năng của ElasticSeach dựa trên các tài liệu [17, 18, 19] .

2.3.1 Khái niệm về ElasticSearch
ElasticSearch là một cơng cụ tìm kiếm (Search Engine) dựa trên nền
tảng Apache Lucene. Nó cung cấp một bộ máy tìm kiếm dạng phân tán, có đầy đủ
cơng cụ với một giao diện web HTTP có hỗ trợ dữ liệu JSON. ElasticSearch được
phát triển bằng Java và được phát hành dạng nguồn mở theo giấy phép Apache.
Tiền thân của ElasticSearch là Compas được Shay Banon tạo ra vào 2004 và
đến 2/2010 Shay Banon cho ra phiên bản đầu tiên. Công ty Elasticsearch được thành
lập vào năm 2012 và vào tháng 5 năm 2015 thì đổi tên thành cơng ty Elastic.

Hình 1: Lịch sử hình thành cơng ty ElasticSearch

khoa luan, tieu luan20 of 102.


Tai lieu, luan van21 of 102.

11

Các tập đoàn đang dùng ElasticSearch:

Hình 2: Các tập đồn sử dụng ElasticSearch


Các đối thủ hiện nay:

Hình 3: Các đối thủ của ElasticSearch

khoa luan, tieu luan21 of 102.


Tai lieu, luan van22 of 102.

12

Bảng so sánh các dịch vụ:

Hình 4: Bảng so sánh các dịch vụ

Đặc điểm chính của ElasticSearch:
• Dữ liệu tìm kiếm và chỉ mục
• Hoạt động như 1 web server, có khả năng tìm kiếm và đưa ra kết quả
nhanh chóng (near realtime) thơng qua cơ chế RESTful API
• Có khả năng phân tích và thống kê dữ liệu thông qua việc sử dụng công
cụ Kibana.

• Chạy trên máy chủ (server) riêng và đồng thời giao tiếp thơng qua
RESTful, do đó ElasticSearch khơng phụ thuộc vào máy trạm (client)
phát triển bằng bất kỳ ngôn ngữ nào. Nên ta rất dễ dàng tích hợp
ElasticSearch vào hệ thống của mình. Chúng ta chỉ cần gửi yêu cầu qua
giao thức http là ElasticSearch sẽ trả về kết quả theo yêu cầu.

• ElasticSearch là một hệ thống phân tán và có khả năng mở rộng theo
chiều ngang (Horizontal scalability) rất tốt. Nếu ta chỉ cần tăng thêm số

lượng nút (node) cho nó là nó tự động mở rộng cho hệ thống của mình.

khoa luan, tieu luan22 of 102.


Tai lieu, luan van23 of 102.

13

Hình 5: Hệ thống phân tán của ElasticSearch

• Dễ dàng khởi động và chạy

2.3.2 Các khái niệm cần biết trong ElasticSearch

Hình 6: Các khái niệm cần biết trong ElasticSearch

2.3.2.1. Document (tài liệu)
Document (tài liệu) là một đối tượng dạng JSON với một số dữ liệu. Đây là
đơn vị nhỏ nhất để lưu trữ dữ liệu trong ElasticSearch. Document giống như row của
table trong cơ sở dữ liệu quan hệ.
khoa luan, tieu luan23 of 102.


Tai lieu, luan van24 of 102.

14

2.3.2.2. Index (Chỉ mục)


Hình 7: Index trong ElasticSearch [19]

Index ở đây không phải là chỉ số mà là một tập hợp các document, nó tương
đương với khái niệm một cơ sở dữ liệu. Trong ElasticSearch, sử dụng một cấu trúc
được gọi là inverted index. Nó được thiết kế để cho phép tìm kiếm full-text search.

2.3.2.3. Shard - Phân đoạn
• Shard (phân đoạn) là đối tượng của Lucene, là tập con
các document của 1 Index. Một Index có thể được chia thành nhiều
Shard.
• Mỗi Node bao gồm nhiều Shard. Chính vì thế Shard mà là đối tượng
nhỏ nhất, hoạt động ở mức thấp nhất và đóng vai trò trong việc lưu trữ
dữ liệu.

khoa luan, tieu luan24 of 102.


Tai lieu, luan van25 of 102.

15

Hình 8: Sharding trong Index [19]

• ElasticSearch đã hỗ trợ tồn bộ việc giao tiếp cũng như tự động thay
đổi các Shard khi cần thiết, do đo chúng ta gần như không bao giờ làm
việc trực tiếp với các Shard.
• Có 2 loại Shard là: Primary Shard và Replica Shard.

Hình 9: Primary Shard và Replica Shard


khoa luan, tieu luan25 of 102.


×