VIỆN CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
BÁO CÁO THỰC TẬP TỐT NGHIỆP
Đề tài
:
Điện toán đám mây, MapReduce và ứng dụng xây dựng hệ
tìm kiếm theo yêu cầu người dùng Giảng viên hướng dẫn: PGS.TS. Huỳnh Quyết Thắng
ThS. Lê Quốc
Bộ môn Công nghệ phần mềm
Viện CNTT & TT
Đại học Bách Khoa Hà Nội
Sinh viên thực hiện: Nguyễn Văn Đông Anh 20060102
a. Quy trình tìm kiếm
Quy trình tìm kiếm bao gồm có bốn bước:
• Truy vấn tìm kiếm được thực hiện bởi người sử dụng bằng cách
yêu cầu bộ máy tìm kiếm thực hiện tìm kiếm các từ khóa nào đó.
• Bộ máy tìm kiếm sẽ thực hiện xử lý truy vấn
• Máy tìm kiếm tìm các từ khóa trong bộ chỉ mục có sẵn của nó
• Máy tìm kiếm thực hiện đánh điểm, sắp xếp theo độ phù hợp với
yêu cầu tìm kiếm và trả kết quả về cho người dùng.
b. Tiêu chí cho một bộ máy tìm kiếm
Có rất nhiều tiêu chí cần đặt ra cho một bộ máy tìm kiếm.
• Kết quả phải chính xác:
• Sắp xếp theo thứ tự phù hợp: Càng phù hợp với yêu cầu tìm kiếm
của người sử dụng thì càng được đưa lên đầu tiên
• Tốc độ nhanh
• Dễ dàng tùy chỉnh: Đối với người phát triển, một bộ máy tìm kiếm
được coi là tốt nếu nó có thể dễ dàng thêm bớt, cấu hình các thuộc
tính bên trong nhân của bộ tìm kiếm. Ngoài ra, máy tìm kiếm còn
cho phép người phát triển dễ dàng theo dõi quá trình tìm kiếm,
theo dõi quá trình thực hiện xử lý câu truy vấn của người dùng để
từ đó có các bước tùy chỉnh phù hợp để nâng cao độ phù hợp của
kết quả trả về
• Phân tán: Với khối lượng thông tin khổng lồ và tăng nhanh từng
ngày thì yêu cầu phân tán là một yêu cầu cần thiết đối với bộ máy
tìm kiếm.
• Một vài chức năng khác:
o Có chức năng đánh dấu cho kết quả trả về
o Tìm kiếm theo cụm: Người dùng có thể lọc dần các tiêu chí
theo cụm từ lớn đến nhỏ dần để đưa ra kết quả phù hợp
o Từ đồng nghĩa: Máy tìm kiếm cho phép tìm các từ có cùng
nghĩa với các từ khóa người dùng nhập vào
• Kết hợp trực tiếp với các cơ sở dữ liệu (MySql, MSSQL) để lấy dữ
liệu
Trong Solr tồn tại hai quá trình:
• Quá trình đánh chỉ mục: Để xây dựng bộ dữ liệu cho máy chủ tìm
kiếm
• Quá trình truy vấn: Để thực hiện tìm kiếm trong bộ dữ liệu của
máy chủ tìm kiếm
b. Tại sao chọn Solr
Hiện nay có nhiều các loại máy chủ tìm kiếm khác nhau, tuy nhiên sau quá
trình tìm hiểu và nghiên cứu, dựa trên các tiêu chí đánh giá về thời gian
thực hiện quá trình đánh ch ỉ mục, thời gian thực hiện câu truy vấn, số
lượng câu truy vấn được thực hiện trong một đơn vị thời gian, số lượng
không gian đĩa cứng mà bộ dữ liệu đánh chỉ mục chiếm dụng, Solr xứng
đáng là ứng cử viên xuất sắc cho một bộ máy tìm kiếm
Điện toán đám mây, MapReduce và ứng dụng xây dựng hệ tìm kiếm theo yêu cầu người dùng
Nguyễn Văn Đông Anh - CNPM K51 - Hanoi University of Technology
5
c. Quá trình thực hiện
Quá trình thực hiện của Solr cũng giống quá trình thực hiện trong một bộ
máy tìm kiếm.
• Xây dựng bộ dữ liệu chỉ mục thông qua quá trình đánh chỉ mục
• Thực hiện yêu cầu truy vấn tìm kiếm của người dùng trong bộ dữ
liệu chỉ mục và trả kết quả tìm kiếm tương ứng cho người dùng.
Điện toán đám mây, MapReduce và ứng dụng xây dựng hệ tìm kiếm theo yêu cầu người dùng
Nguyễn Văn Đông Anh - CNPM K51 - Hanoi University of Technology
7
• Các bản ghi bị xóa: Chứa thông tin đánh dấu các bản ghi
trong chỉ mục bị xóa. Sau này khi thực hiện tối ưu hóa, sẽ
thực hiện xóa hẳn trong file chỉ mục.
Đánh chỉ mục ngược: Bộ dữ liệu chỉ mục chứa các thông tin thống
kê về term để việc tìm kiếm trên bộ dữ liệu về term này được thực
hiện một các hiệu quả. Chỉ mục ngược có nghĩa là đ ối với mỗi
term, file chỉ mục sẽ lưu các bản ghi có chứa term đó thay vì
ngược lại.
Bản ghi (document): Vì Solr sử dụng cơ sở dữ liệu bản ghi
(document database), vì vậy, không hề tồn tại quan hệ giữa các bản
ghi với nhau. Toàn bộ các thông tin tương ứng đối với một thực
thể được lưu toàn bộ trong một bản ghi, và bản ghi này được lưu
lại trong chỉ mục. Bản ghi bao gồm nhiều trường.
Trường (field): Trong mỗi một bản ghi, có các trường tương ứng
để chứa dữ liệu. Ví dụ thông tin về con người gồm có họ, tên, tuổi,
quê quán… Mỗi một trường thuộc một kiểu dữ liệu xác định, có
thể là nguyên thủy (int, string…) hoặc do người phát triển tự định
nghĩa. Ngoài ra, còn có một số trường đặc biệt như:
• CopyField: Là trường mà sẽ lấy thông tin từ một trường
(source) và ghi vào một trường khác (destination)
• DynamicField: Là trường cho phép người dùng không phải
ghi rõ tên trư ờng mà chỉ cần sử dụng các ký tự đại diện
(như *).
• UniqueKey: Chỉ định rõ trư ờng nào đại diện cho một bản
ghi
Tokenizer: Là các thành phần được sử dụng để tạo các term từ câu
truy vấn của người dùng hoặc dữ liệu ở một trường nào đó dựa vào
các tiêu chí định sẵn trong file cấu hình. Ví dụ:
WhiteSpaceTokenizer sẽ tách câu truy vấn của người dùng thành
các từ khóa dựa vào khoảng trắng. StandardTokenizer sẽ tách câu
truy vấn của người dùng dựa vào khoảng trắng và các dấu chấm
câu. LowerCaseTokenizer tách câu truy vấn của người dùng thành
các từ khóa dựa vào các chữ cái không phải là ký tự và sau đó
chuyển hết từ khóa về dạng chữ viết thường.
Filter: Là các thành phần được sử dụng để phân tích các từ khóa
và hoặc giữ chúng, chuyển chúng thành các phần khác, hoặc bỏ
chúng, hoặc tạo thêm các từ khóa khác. Các tiêu chí trên được chỉ
định bởi người phát triển trong file cấu hình. Một vài ví dụ cho
filter như SynonymFilter sẽ thêm các từ khóa đồng nghĩa với các
từ khóa trong câu truy vấn của người dùng hoặc trên trường được
áp dụng Filter; StopwordFilter sẽ loại bỏ hết tất cả các từ khóa
không mang giá trị (được định nghĩa trong một file văn bản).
Quá trình đánh chỉ mục được thực hiện như sau: Sau khi lấy được
các thông tin cần đánh chỉ mục và đưa vào các trường trong bản
ghi, các thành phần Tokenizer và Filter người phát triển chỉ định
trong file cấu hình sẽ thực hiện tách thông tin trong các trường
thành các từ khóa cụ thể. Các Analyzer này sẽ bổ sung, xóa bớt
hoặc giữ nguyên các từ khóa phụ thuộc vào cách cấu hình của
người phát triển. Sau đó, các từ khóa được sinh ra sẽ đư
ợc lưu lại
trong bộ chỉ mục chuyên biệt để tìm kiếm. Các giá trị nguyên bản
ứng với mỗi trường sẽ được lưu lại hoặc không lưu lại (tùy cách
cấu hình trư ờng trong file cấu hình bản ghi (schema) của người
lý bởi QueryParser, bộ phận này sẽ chịu trách nhiệm sao cho câu
truy vấn tìm kiếm của người dùng được tách khỏi các tham số
trong câu lệnh truy vấn. Có nhiều loại QueryParser trong Solr, ví
dụ Standard Query Parser cho phép người dùng xác định rõ câu
truy vấn tìm kiếm; Dismax Query Parser cho phép người dùng
thực hiện các câu lệnh tìm kiếm đơn giản nhưng trên nhiều trường
khác nhau. Sau đó, truy vấn tìm kiếm được các Analyzer chỉ định
bởi người phát triển tách thành các từ khóa khác nhau.
Sau đó, bộ máy tìm kiếm sẽ tìm kiếm các từ khóa cùng với trọng
số trên các từ khóa đó (nếu có) trong bộ dữ liệu chỉ mục của hệ
thống. Giá trị trả về sẽ được xử lý tiếp dựa vào các tham số truyền
vào trong câu lệnh truy vấn của người dùng như bắt đầu từ bản ghi
nào, kết thúc đến bản ghi nào, trả về theo định dạng gì… Ngoài ra,
các thành phần được chỉ định trong yêu cầu truy vấn sẽ được xử lý
Điện toán đám mây, MapReduce và ứng dụng xây dựng hệ tìm kiếm theo yêu cầu người dùng
Nguyễn Văn Đông Anh - CNPM K51 - Hanoi University of Technology
13
thêm trong phần này như thành phần HightLighting sẽ đánh dấu
các từ khóa trong câu lệnh truy vấn của người dùng phù hợp với từ
nào trong bản ghi trong bộ dữ liệu chỉ mục của bộ máy tìm kiếm.
Các kiểu tìm kiếm được hỗ trợ trong Solr:
• Normal Query: Chỉ có từ khóa trong câu lệnh truy vấn của
người dùng
• Wildcard Query: Có thêm các ký tự wildcard trong câu
lệnh truy vấn. ? thay cho một ký tự; * thay cho không hoặc
nhiều ký tự
thông tin của con người. Bộ máy tìm kiếm này phục vụ mục đích tìm kiếm
con người cho 3 đối tượng chính: Các sinh viên hoặc cựu sinh viên muốn
tìm một sinh viên nào đó nhằm phục vụ một mục đích nào đó; Các nhà
làm giáo dục có thể thực hiện tìm kiếm sinh viên sau khi ra trường để đánh
giá thực trạng giáo dục…; Các nhà tuyển dụng tìm kiếm các ứng viên có
tiềm năng.
Điện toán đám mây, MapReduce và ứng dụng xây dựng hệ tìm kiếm theo yêu cầu người dùng
14
Nguyễn Văn Đông Anh - CNPM K51 - Hanoi University of Technology
Vì BKProfile là một hệ thống tìm kiếm nên nó cũng có các yêu cầu cơ bản
của một hệ thống tìm kiếm như
• Độ phù hợp của kết quả cao
• Tốc độ thực thi nhanh chóng
• Thông tin trả về là duy nhất đối với một người
• Có thêm các tính năng phong phú khác để tăng thêm tính hấp dẫn
cho hệ thống
b. Thiết kế cấu trúc bản ghi chỉ mục
Bản ghi bao gồm có các trường
• *_indexed: Để lưu các thông tin của các trường có kết thúc là
_indexed.
• Text: là một copy field, mọi giá trị của các trường khác sẽ được
chuyển thẳng vào trong trường này. Trường này được thực hiện
việc tìm kiếm mặc định.
• Profile_id: Là đại diện cho một bản ghi.
Thiết kế kiểu trường
• BKText là một kiểu dữ liệu custom được tạo riêng cho dự án
BKProfile.
Điện toán đám mây, MapReduce và ứng dụng xây dựng hệ tìm kiếm theo yêu cầu người dùng
16
Nguyễn Văn Đông Anh - CNPM K51 - Hanoi University of Technology o Quá trình tìm kiếm
WhiteSpaceFilterFactory:Tách truy vấn của người
dùng thành các từ khóa dựa vào khoảng trắng
ASCIIFoldingFilterFactory: Chuyển các từ khóa
thành dạng ASCII để có thể tìm kiếm tiếng việt
không dấu
WordDelimiterFilterFactory:Tách từ ghép trong đó
có cả chữ cái và số thành chữ cái riêng và số riêng
LowerCaseFilterFactory: Chuyển tất cả từ khóa về
dạng chữ cái thường
SynonymFilterFactory: Sử dụng từ đồng nghĩa đ ể
cho phép quá trình tìm kiếm có kết quả tốt hơn
StopFilterFactory: Loại bỏ tất cả các từ không mang
nhiều ý nghĩa. Các t ừ khóa này được định nghĩa
trong một file riêng (stopword.txt). Hầu hết các từ
này đều là từ cảm thán.
Điện toán đám mây, MapReduce và ứng dụng xây dựng hệ tìm kiếm theo yêu cầu người dùng
Nguyễn Văn Đông Anh - CNPM K51 - Hanoi University of Technology
17
ShingleFilterFactory: Ghép nối các từ khóa thành
các cụm từ (tối đa là 5) để tăng độ chính xác trong
Điện toán đám mây, MapReduce và ứng dụng xây dựng hệ tìm kiếm theo yêu cầu người dùng
Nguyễn Văn Đông Anh - CNPM K51 - Hanoi University of Technology
19
4. Demo
Tìm kiếm với từ khóa Huỳnh Quyết Thắng Điện toán đám mây, MapReduce và ứng dụng xây dựng hệ tìm kiếm theo yêu cầu người dùng
20
Nguyễn Văn Đông Anh - CNPM K51 - Hanoi University of Technology
Tìm kiếm với từ khóa: Huỳnh Quyết Thắng Đại học Bách Khoa Hà Nội công
nghệ thông tin công nghệ phần mềm Điện toán đám mây, MapReduce và ứng dụng xây dựng hệ tìm kiếm theo yêu cầu người dùng
Nguyễn Văn Đông Anh - CNPM K51 - Hanoi University of Technology
21
Tài liệu tham khảo
[1]. Apache Lucene, Solr [2]. Packtpub Solr 1.4 Enterprise Search Server 2009
[3]. Lucidworks for Solr