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

(Luận văn thạc sĩ) ứ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.26 MB, 98 trang )

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

Luan van


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 TOÀN

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

Luan van


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 Tồ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

Luan van


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 q 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 q 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 quá 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!

Luan van



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 TỐN VÀ LỰA CHỌN CƠNG NGHỆ .............. 9
2.1 Giới thiệu bài toá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


Luan van


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

Luan van


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

Luan van


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

Luan van


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

Luan van


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 chun 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

Luan van


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. Ngoà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
chuyên 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 đoá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

Luan van



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, 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ế.

Luan van


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à nguyên 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.

Luan van


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
ngun (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:

Luan van


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 =

{200} ∩ {150}
{150}

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

=

{130}
≈ 87%
{150}

=

{130}

≈ 65%
{200}

=

{20}
≈ 2.5%
{800}

Luan van


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 yê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 yê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ẽ qt để 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ẽ

Luan van


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ẽ quét 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 toán chống spam, thao túng kết quả
tìm kiếm. Google ln 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 tồ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

Luan van



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
ln 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.

Luan van


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 tố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 tố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]

Luan van



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. Ngoà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

Luan van


11
Các tập đồ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

Luan van


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.

Luan van


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ệ.

Luan van


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.

Luan van


15

Hình 8: Sharding trong Index [19]


• ElasticSearch đã hỗ trợ toà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

Luan van


×