So sánh kết quả tìm kiếm của Solr với trường hợp sử dụng tính năng Fulltext search của cơ sở dữ liệu Oracle...14 KẾT LUẬN...20 DANH MỤC TÀI LIỆU THAM KHẢO...21 Trang 2... Chính vì vậy, đ
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
* * * *
TIỂU LUẬN MÔN: CÁC HỆ CƠ SỞ DỮ LIỆU TIÊN TIẾN
Đề tài: Tìm hiểu về Apache Solr
Trang 2Hà Nội: 08/2016
-MỤC LỤC
MỞ ĐẦU 3
CHƯƠNG 1: TÌM HIỂU VỀ APACHE SOLR 4
I CẤU TRÚC CHUNG CỦA APACHE SOLR 4
II CÁC CHỨC NĂNG CƠ BẢN CỦA SOLR 5
CHƯƠNG 2: CÀI ĐẶT VÀ THỬ NGHIỆM KHẢ NĂNG TÌM KIẾM TOÀN VĂN (FULL-TEXT SEARCH) 7
I CÀI ĐẶT 7
1 Cài đặt Java SDK 7
2 Cài đặt Apache Tomcat 8
3 Cài đặt Solr 9
II THỬ NGHIỆM KHẢ NĂNG TÌM KIẾM TOÀN VĂN (FULL-TEXT SEARCH) 11
1 Cơ sở dữ liệu sử dụng để tìm kiếm toàn văn 11
2 Thực hiện cấu hình và đánh chỉ mục dữ liệu thông qua Solr 12
3 So sánh kết quả tìm kiếm của Solr với trường hợp sử dụng tính năng Fulltext search của cơ sở dữ liệu Oracle 14
KẾT LUẬN 20
DANH MỤC TÀI LIỆU THAM KHẢO 21
Trang 2
Trang 3MỞ ĐẦU
Hiện nay, trong quá trình phát triển website, đã có rất nhiều nhu cầu xâydựng các hệ thống thu thập tin bài giúp ích cho người dùng có thể thu thập cácthông tin từ các website hoặc nhóm website một cách nhanh chóng, dễ dàng vàthuận tiện Những hệ thống thu thập tin bài đó cũng cần cung cấp khả năng kiếmnội dung hoặc lọc ra các tin bài có nội dung theo từ khóa một cách nhanh vàchính xác nhất Chính vì vậy, đòi hỏi cao về khả năng tìm kiếm, ranking kết quảvới nhiều tiêu chí cùng một lúc, hoặc cần xây dựng bộ lọc cho tìm kiếm, …
Nhưng khi đó, nếu sử dụng tính năng Fulltext search của cơ sở dữ liệu thìvấn đề gặp phải sẽ là rất khó để xây dựng quan hệ giữa các bảng, các trường,đồng thời số lượng truy vấn vào cơ sở dữ liệu là rất nhiều, và phải thực hiệnđánh chỉ mục khá đồ sộ Việc này là thực sự không cần thiết và đôi khi là bấtkhả thi với những hệ thống được xây dựng trên những máy chủ có sức mạnhkhông cao Để nhằm khắc phục những vấn đề gặp phải đó, rất nhiều flatformsearch engine ra đời, phải kể đến như là sphinx, solr, elasticsearch, Và search-engine được đánh giá là rất mạnh hiện nay, đó là Apache Solr
Trong khuôn khổ bài tiểu luận học phần “Các hệ cơ sở dữ liệu tiên tiến”này, chính em xin đưa ra những tìm hiểu cũng như là cài đặt, thử nghiệm khảnăng tìm kiếm toàn văn của Apache Solr
Mặc dù nhóm chúng em đã có nhiều những cố gắng để thực hiện đề tàimột cách hoàn chỉnh nhất, song do chúng em còn hạn chế về mặt kiến thức, kinhnghiệm nên không tránh khỏi những thiếu sót nhất định mà bản thân chúng emchưa nhìn nhận ra được ngay Chúng em rất mong nhận được sự góp ý của côgiáo và các bạn để tiểu luận được hoàn chỉnh hơn
Nhóm học viên chúng em xin trân trọng cảm ơn!
Trang 4CHƯƠNG 1: TÌM HIỂU VỀ APACHE SOLR
I CẤU TRÚC CHUNG CỦA APACHE SOLR
Solr là một platform (nền tảng) mã nguồn mở dựa trên Apache Lucence
có khả năng cung cấp sử dụng Lucene Java làm thư viện cho việc index (đánhchỉ số) và search (tìm kiếm) dữ liệu Solr nhập dữ liệu dưới dạng XML thôngqua HTTP, hoặc sử dụng thư viện để nhập khối lượng lớn dữ liệu Người dùng
có thể truy vấn dữ liệu này thông qua HTTP GET và nhận về một kết quả dạngXML Solr chạy bên trong một Java servlet container như Tomcat, Jetty hayResin
Solr có nhiều thành phần (components) khác nhau bao gồm:
Trang 4
Trang 5- Apache Tika dùng để trích xuất metadata, tìm kiếm và chỉ mụcnhiều loại file document khác nhau như pdf, docx, mp3, jpg (hỗ trợ
66 file types khác nhau)
Architecture), đây cũng là một project thuộc Apache Foudnation,
nó được dùng để phân tích một lượng lớn dữ liệu không có cấu trúcnhằm tìm ra được những thông tin có ích cho người dùng Ví dụ:
o Phân tích các phim và trích xuất phụ đề rồi dựa vào đó để tìm
ra diễn viên nào đóng trong phim đó
o Tìm các bài viết, video, hình ảnh có liên quan tới chủ đề củamột bài viết cụ thể nào đó
- Carrot2 (search results clustering engine) dùng để phân loại vànhóm các kết quả tìm kiếm thành những danh mục có cùng chủ đề(thematic categories)
II CÁC CHỨC NĂNG CƠ BẢN CỦA SOLR
1 Khả năng tìm kiếm văn bản toàn diện(Full-Text Search) giống kiểuGoogle
2 Chỉnh sửa để hiệu năng tốt hơn
3 Dựa trên các chuẩn mở trong giao tiếp với các hệ thống khác – XML,JSON và HTTP
4 Quản trị dưới dạng giao diện HTML đơn giản
5 Thống kê dưới dạng JMX
6 Khả năng mở rộng ra nhiều server Solr
7 Cấu hình đơn giản dễ dàng với định dạng XML
8 Có khả năng bổ sung các phần mở rộng(plugin) mới Ví dụ như phân tích
mở rộng tiếng Việt: Bắt lỗi chính tả, bỏ dấu, …
9 Cho phép highlighting kết quả tìm kiếm, như cách mà google hiện thịthông tin tóm tắt về kết quả mà ở đó câu truy vấn được in đậm
10.Có thể xây dựng rất nhiều ứng dụng khác mà một trang tìm kiếm cần như:autosuggestion, spellchecking, xây dựng tagcloud, phân loại kết quảclustering (như Bing làm), trending keywords, category navigation, cáckết quả liên quan, nhóm kết quả (field collapsed) …
Trang 611.Cho phép scale hệ thống một cách dễ dàng khi bạn có một lượng lớn dữliệu mà không đủ chứa trên một máy chủ hay phải phục vụ rất nhiềungười dùng đồng thời.
12.Solr cũng có thể dùng như CSDL NoSQL hay như cache layer, dùng chocác listing cần performance tốt
13.Solr cũng sắp hỗ trợ realtime cho phép tìm kiếm ngay kết quả sau khiindex Điều nàyđặc biệt khó khi index rất lớn Hiện tại Solr cho phép kếtquả rât nhanh, nhưng phải hy sinh thời gian index Với dữ liệu lớn có khibạn phải mất 30 phút chỉ để cập nhật được một tài liệu
14.Solr hỗ trợ rất nhiều công cụ để tinh chỉnh kết quả tìm kiếm, bằng tất cảcác thông tin mà bạn cung cấp làm sao để kết quả trả về là tốt nhất Ví dựnhư đánh trọng số các trường, click log, số lượt view, …
Trang 6
Trang 7CHƯƠNG 2: CÀI ĐẶT VÀ THỬ NGHIỆM KHẢ NĂNG TÌM
KIẾM TOÀN VĂN (FULL-TEXT SEARCH)
I CÀI ĐẶT
1 Cài đặt Java SDK
Trang 82 Cài đặt Apache Tomcat
- Sử dụng bản cài apache-tomcat-8.0.0-RC5.exe
- Kiểm tra server Tomcat trên trình duyệt bằng cácg truy cập đườngdẫn
Trang 8
Trang 93 Cài đặt Solr
- Sử dụng bộ cài Solr-4.6.0 để cài đặt
- Cấu hình chạy Solr trong Tomcat
- Thực hiện chạy thử Solr: Sau khi cài đặt thành công, truy cập vàosolr thông qua trình duyệt
- Cấu hình
o Schema.xml: Dùng để config các trường dữ liệu (field), cách
lưu trữ để sau này lưu dữ liệu phục vụ cho việc đánh index
Các thành phần chính của một trường chính là các thuộc tính (attribute)của trường đó:
Trang 10 Default: Đây là giá trị mặc định cho trường
Indexed=true/false: Xác định trường cần đánh index
(chỉ mục) Nếu Indexed = true có nghĩa là trường dữliệu cần đánh chỉ mục, từ đó trường dữ liệu có thểđược tìm thấy, sắp xếp và chỉnh sửa
Stored=true/false: Xác định trạng thái lưu của dữ liệu
trong Solr Nếu là true thì dữ liệu được lưu vĩnh viễntrong data của Solr, ngược lại dữ liệu sẽ được add vàindex lại sau khi khởi động
Type: Xác định loại lưu trữ cho trường dữ liệu như:
date, binary, string, text, text_general, uuid, …
o Solrconfig.xml: Dùng để config các chức năng cụ thể
Trang 10
Trang 11II THỬ NGHIỆM KHẢ NĂNG TÌM KIẾM TOÀN VĂN (FULL-TEXT
SEARCH)
1 Cơ sở dữ liệu sử dụng để tìm kiếm toàn văn
- Hệ thống lưu trữ tin bài được thu thập các thông tin từ các websitehoặc nhóm website:
o DOMAIN: Cho phép người dùng quản lý các danh sách tênmiền cần bóc tách dữ liệu
o CATEGORY: Phân loại chuyên mục các tin tức được bóctách về
o LINK_CRAWLER: Thông tin cấu hình các trang tin tức đểbóc tác dữ liệu
o LINK_CRAWLER _DETAIL: Dữ liệu tin tức được bóc tách
về, là thông tin chính để người dùng có thể tìm kiếm nộidung hoặc lọc ra các tin bài có nội dung theo từ khóa
o LINK_CRAWLER _DETAIL_GROUP: Thông tin cấu hìnhcác trang duyệt cần bóc tách theo nhóm Các trang duyệt này
Trang 12sẽ được thu thập theo các tiêu chí chung của nhóm và theo từkhóa
- Hệ thống cung cấp cho người dùng chức năng có thể tìm kiếm nộidung hoặc lọc ra các tin bài có nội dung theo từ khóa
o Số lượng bản ghi thử nghiệm khả năng tìm kiếm: 18.193 bảnghi
o Tiêu chí tìm kiếm: Chuyên mục, tên miền, nội dung, ngàyđăng bài, …
2 Thực hiện cấu hình và đánh chỉ mục dữ liệu thông qua Solr
- Cấu hình trường cần đánh chỉ mục để phục vụ tìm kiếm toàn văn(schema.xml)
Trang 12
Trang 13- Cấu hình để Solr có thể import data từ cơ sở dữ liệu để phục vụ choviệc indexing (solrconfig.xml)
- Định nghĩa các field sẽ được Solr index lấy từ bảng nào, trường nàotrong database (db-data-config.xml)
Trang 14- Thực hiện đánh chỉ mục, kết quả đánh index sẽ được hiển thị trêntrình duyệt khi truy cập vào địa chỉ Solr:
- Chạy thử kết quả tìm kiếm của Solr chúng ta truy vấn thử một sốlệnh như sau:
http://localhost:1357/solr/Crawler/select?q=*%3A*+AND+NoiDung
%3A+N%E1%BB%A3+c%C3%B4ng&wt=json&indent=true
3 So sánh kết quả tìm kiếm của Solr với trường hợp sử dụng tính năng Fulltext search của cơ sở dữ liệu Oracle
- Số lượng bản ghi thử nghiệm khả năng tìm kiếm: 18.193 bản ghi
- Thực hiện tìm kiếm với Apache Solr
Trang 14
Trang 15o Câu truy vấn lấy dữ liệu
o Thời gian truy vấn tất cả dữ liệu
Trang 16o Thời gian truy vấn dữ liệu khi có điều kiện tìm kiếm
- Thực hiện tìm kiếm của cơ sở dữ liệu Oracle (Chưa đánh indextrường dữ liệu trong Oracle)
o Câu truy vấn lấy dữ liệu
Trang 16
Trang 17o Thời gian truy vấn tất cả dữ liệu
o Thời gian truy vấn dữ liệu khi có điều kiện tìm kiếm
Trang 18- Thực hiện tìm kiếm của cơ sở dữ liệu Oracle (Đã thực hiện đánhindex trường dữ liệu trong Oracle)
o Thủ tục (Stored Procedure) truy vấn dữ liệu
o Thời gian truy vấn tất cả dữ liệu
Trang 18
Trang 19o Thời gian truy vấn dữ liệu khi có điều kiện tìm kiếm
Trang 20KẾT LUẬN
Qua bài tiểu luận môn “Các hệ cơ sở dữ liệu tiên tiến” với đề tài “Tìm
hiểu về Apache Solr”, kết quả của nhóm đã đạt được như sau:
- Tìm hiểu được cấu trúc chung cũng như các chức năng cơ bản củaApache Solr
- Tiến hành cài đặt và thử nghiệm khả năng tìm kiếm toàn văn
- Thực hiện so sánh kết quả tìm kiếm với trường hợp sử dụng tínhnăng Fulltext search của cơ sở dữ liệu Oracle
Trang 20
Trang 21DANH MỤC TÀI LIỆU THAM KHẢO