Tải bản đầy đủ (.docx) (21 trang)

Tìm hiểu về Apache Solr

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 (1.36 MB, 21 trang )

TRƯỜ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
- Mã học phần
: IT6060
- Giảng viên hướng : Vũ Tuyết Trinh
dẫn
- Học viên thực hiện
T

: (Nhóm 08 – 15ACNTT)

Họ và tên

Ngày sinh

T

Mã học
viên

1

Nguyễn Thị Thùy Dung 04/11/1986 CA150106

2


Nguyễn Mạnh Hùng

16/03/199

CA150109

1
3

Bùi Hữu Anh Tuấn

15/04/198
7

CA150117


- Hà 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


MỞ ĐẦU
Hiện nay, trong quá trình phát triển website, đã có rất nhiều nhu cầu xây
dự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ác
thô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ếm
nộ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ất
khả thi với những hệ thống được xây dựng trên những máy chủ có sức mạnh
không cao. Để nhằm khắc phục những vấn đề gặp phải đó, rất nhiều flatform
search engine ra đời, phải kể đến như là sphinx, solr, elasticsearch, ... Và searchengine đượ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ài
mộ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, kinh
nghiệ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 em
chư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 3


CHƯƠ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 (đánh
chỉ số) và search (tìm kiếm) dữ liệu. Solr nhập dữ liệu dưới dạng XML thông
qua 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ạng
XML. Solr chạy bên trong một Java servlet container như Tomcat, Jetty hay
Resin.

Solr có nhiều thành phần (components) khác nhau bao gồm:
- Apache Lucene để phân tích, đánh chỉ mục tìm kiếm dữ liệu.

Trang 4


- Apache Tika dùng để trích xuất metadata, tìm kiếm và chỉ mục
nhiều loại file document khác nhau như pdf, docx, mp3, jpg (hỗ trợ

66 file types khác nhau).
- Apache
UIMA (Unstructured

Information

Managemen

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úc
nhằ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ủa
một bài viết cụ thể nào đó.
- Apache Velocity là một Java-based template engine.
- 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ểu
Google.
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,
4.
5.
6.
7.
8.


JSON và HTTP
Quản trị dưới dạng giao diện HTML đơn giản
Thống kê dưới dạng JMX
Khả năng mở rộng ra nhiều server Solr
Cấu hình đơn giản dễ dàng với định dạng XML
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ác
kết quả liên quan, nhóm kết quả (field collapsed) …
Trang 5


11.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ều
người dùng đồng thời.
12.Solr cũng có thể dùng như CSDL NoSQL hay như cache layer, dùng cho
cá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 khi
index. Điều nàyđặc biệt khó khi index rất lớn. Hiện tại Solr cho phép kết
quả rât nhanh, nhưng phải hy sinh thời gian index. Với dữ liệu lớn có khi
bạ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


CHƯƠ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 7


2. 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 đường
dẫn

Trang 8


3. 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ào
solr 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 9


 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ễn
trong 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


II.

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 website
hoặc nhóm website:
o DOMAIN: Cho phép người dùng quản lý các danh sách tên
miề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óc
tá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ội
dung 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ình
các trang duyệt cần bóc tách theo nhóm. Các trang duyệt này
Trang 11


sẽ đượ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ội
dung 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ản
ghi.
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



- Cấu hình để Solr có thể import data từ cơ sở dữ liệu để phục vụ cho
việc indexing (solrconfig.xml)

- Định nghĩa các field sẽ được Solr index lấy từ bảng nào, trường nào
trong database (db-data-config.xml)

Trang 13


- Thực hiện đánh chỉ mục, kết quả đánh index sẽ được hiển thị trên
trì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


o Câu truy vấn lấy dữ liệu

o Thời gian truy vấn tất cả dữ liệu

Trang 15



o 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 index
trường dữ liệu trong Oracle)
o Câu truy vấn lấy dữ liệu

Trang 16


o 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 17


- Thực hiện tìm kiếm của cơ sở dữ liệu Oracle (Đã thực hiện đánh
index 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


o Thời gian truy vấn dữ liệu khi có điều kiện tìm kiếm

Trang 19



KẾ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ủa
Apache 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ính
năng Fulltext search của cơ sở dữ liệu Oracle.

Trang 20


DANH MỤC TÀI LIỆU THAM KHẢO
1.
2.
3.
4.
5.

/> /> /> /> />
Trang 21



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×