4.4.1 Khảo sát hiện trạng
Xây dựng một hệ thống thư viện điện tử là mục tiêu chính của đề tài này, hệ thống được xây dựng lên sẽ được dùng để phục vụ nghiên cứu cũng như bước đầu triển khai ứng dụng.
Như đã nói ở phần trên, hiện nay có nhiều hệ thống thư viện điện tử đã được triển khai, trong số đó có các hệ thống miễn phí tốt như MAS, Google Scholar, CiteSeerX…, cũng có nhiều hệ thống tính phí tốt khác. Một hệ thống thư viện điện tử được xây dựng lên cần phải thể hiện được tính hữu ích của nó đối với người xây dựng cũng như người sử dụng. Để tăng tính cạnh tranh, đề tài này lựa chọn xây dựng một hệ thống miễn phí, cho phép mọi người tìm kiếm và đi đến nguồn của các tài liệu để tải về. Hệ thống sẽ thử nghiệm nhiều công nghệ, hỗ trợ nhiều tính năng giúp người dùng sử dụng tiện lợi hơn như: tìm kiếm nâng cao, xếp hạng kết quả tìm kiếm theo nhiều tiêu chí, duyệt danh sách các đối tượng… Hệ thống cũng sẽ bao gồm module hỗ trợ chức năng khuyến nghị các bài báo tương tự, và module biểu diễn minh họa các quan hệ ngữ nghĩa giữa các đối tượng bằng đồ họa. Đặc biệt, hệ thống sẽ quan tâm hơn đến người dùng ở Việt Nam so với các hệ thống khác trên thế giới, hệ thống này sẽ cung cấp nhiều thông tin đặc thù cho khu vực Việt Nam. Hiện tại hệ thống đang trong quá trình phát triển nên dữ liệu chỉ giới hạn trong lĩnh vực công nghệ thông tin.
4.4.2 Phân tích thiết kế
Hệ thống thư viện điện tử của đề tài được đặt tên là PubGuru, viết tắt của Publication Guru. Hệ thống PubGuru có ba module được phát triển bởi nhiều nhóm, các module này là:
Module tìm kiếm, xếp hạng các bài báo và các đối tượng khác như tác giả, hội thảo, tờ báo, tổ chức.
Module tìm kiếm xếp hạng là module căn bản của hệ thống, cung cấp nền tảng cho các module khác thực hiện và là nền tảng để thử nghiệm các kỹ thuật, công nghệ, ý tưởng mới, đề tài khóa luận này tập trung vào việc xây dựng nền tảng của hệ thống và module tìm kiếm, báo cáo này cũng tập trung vào module tìm kiếm. Module tìm kiếm sẽ được xây dựng theo kiến trúc MVC.
Sơ đồ cấu trúc hệ thống PubGuru như sau:
Giao diện:
Sơ đồ các trang trong hệ thống:
Hệ thống PubGuru:
Module tìm kiếm.
o Trang tìm kiếm, đồng thời là trang chủ.
Trang tìm kiếm nâng cao.
Trang kết quả tìm kiếm.
Trang duyệt danh sách các đối tượng.
Trang khuyến nghị bài báo.
Trang biểu diễn các quan hệ ngữ nghĩa.
Module khuyến nghị bài báo.
Module biểu diễn các quan hệ ngữ nghĩa.
Cơ sở dữ liệu: PubGuru Module tìm kiếm Module khuyến nghị Module biểu diễn
Như đã nói ở phần trên, về cơ bản, cơ sở dữ liệu được sử dụng bởi hệ thống thư viện điện tử là sản phẩm của chương trình tính toán các chỉ số đánh giá xếp hạng. Cơ sở dữ liệu này được tạo thành bằng cách kết hợp cơ sở dữ liệu của chương trình thu thập dữ liệu và các bảng lưu trữ dữ liệu chỉ số đánh giá thành một cơ sở dữ liệu duy nhất. Ngoài ra để chương trình hoạt động hiệu quả thì khi cài đặt cần phải thử nghiệm và tiến hành lập các chỉ mục cần thiết, chỉnh sửa các thông số cần thiết của cơ sở dữ liệu.
4.4.3 Cài đặt
Hệ thống PubGuru là một hệ thống ứng dụng được xây dựng trên nền tảng Java web với các công nghệ sau:
- Ngôn ngữ phát triển: Java, JSP, HTML, CSS, JavaScript. - Công nghệ Java EE16 6, AJAX.
- Cơ sở dữ liệu quan hệ với hệ quản trị MySQL 5.6 [MySQL]
- Công cụ phát triển: Adobe Dreamweaver17 CS4, Netbeans 7.1 [Netbeans]
Kiến trúc hệ thống:
Cũng với tư tương như các chương trình crawler và chương trình tính toán các chỉ số, hệ thống được xây dựng sử dụng Java EE thuần túy, không sử dụng các framework lập trình nhằm kiểm soát code tốt hơn từ đó dễ dàng tối ưu chương trình.
Hệ thống được xây dựng theo kiến trúc MVC được hiện thực bởi kiến trúc JSP Model 2 (được gọi là MVC Model 2), với:
View: Là các trang JSP cung cấp giao diện cho người dùng.
Model: Là các lớp Java truy xuất cơ sở dữ liệu và sinh ra các beans.
Controller: là các servlet tiếp nhận các yêu cầu của người dùng từ View và kiểm soát dòng logic của chương trình. Controller sẽ gọi các hàm cần thiết trong Model và forward dữ liệu sang View để hiển thị.
Hình sau mô phỏng hoạt động của hệ thống theo kiến trúc MVC Model 2:
Sơ đồ 4.6 – Kiến trúc MVC Model 2 của hệ thống.
(Nguồn javaworld18)
Ở module tìm kiếm, người dùng tương tác với các trang JSP view, yêu cầu được gửi đến các cotroller servlet, các servlet này gọi các lớp business logic cần thiết để thực hiện logic của chương trình, đồng thời forward đến các trang JSP kết quả. Các lớp business sẽ gọi các lớp data access cần thiết để lấy dữ liệu và sinh ra các beans. Ở các trang JSP kết quả, dữ liệu trong beans sẽ được hiển thị bằng cách sử dụng kết hợp The JSP 2.0 Expression Language và JSP Standard Tag Library.
Cấu trúc code của chương trình được tổ như sau:
Thư mục Web Pages chứa các tập tin trang JSP đóng vai trò là View trong mô hình MVC, thư mục WEB-INF chứa các thư mục chứa tập tin cấu hình và các thư viện, các thư mục CSS, JavaScript, hình ảnh, … Các tập tin mã nguồn khác được tổ chức trong các package khác nhau,
với các package sau:
o uit.pubguru.servlet: đóng vai trò Controller. Có nhiều servlet khác nhau, mỗi servlet xử lý request từ một số view nhất định.
o uit.pubguru.dto: Data transfer object, các đối tượng tương ứng với các bảng trong cơ sở dữ liệu.
o uit.pubguru.dbaccess: Data Access. Chương trình không sử dụng framework như hibernate vì muốn kiểm soát hoạt động của chương trình tốt hơn để có thể tối ưu chương trình.
o uit.pubguru.bo: Business Logic. Phần này chứa các lớp có chức năng xử lý mọi hoạt động logic của chương trình.
o uit.pubguru.constant: Các hằng số, pattern dùng trong chương trình.
o uit.pubguru.dbconnection: Cung cấp connection đến cơ sở dữ liệu. Hiện tại hệ thống đang sử dụng cơ chế connection pool được cung cấp bởi
o uit.pubguru.utility: Cung cấp các công cụ để thực hiện các chức năng của chương trình, trong đó có lớp CSPublicationCrawlerLogger hỗ trợ ghi log của chương trình, để lưu vết lại mọi hoạt động cần biết.
o uit.pubguru.dto.database: Chứa các hằng số lưu tên của database đang sử dụng và các tên bảng, tên thuộc tính tương ứng. Phần này hỗ trợ cho các package khác nhằm hoàn thiện cơ chế model không dùng framework của chương trình.
Cơ sở dữ liệu:
Hiện tại chương trình đang được triển khai trên cơ sở dữ liệu MySQL vì các ưu điểm của nó như miễn phí, đơn giản, dễ triển khai, chất lượng và hỗ trợ tương đối tốt. Hệ quản trị cơ sở dữ liệu đang dùng là phiên bản 5.6.
Như đã nói, chương trình sử dụng connection pool để kết nối với database. Connection pool giúp tiết kiệm tài nguyên cho hệ thống bằng cách tái sử dụng các connection cũ, đồng thời giúp tăng tốc độ và hiệu suất của chương trình vì
các connection được tạo sẵn. Connection pool này được cung cấp bởi web server GlassFish 3.1.
Dữ liệu của hệ thống được lấy từ dữ liệu của chương trình thu thập dữ liệu và đã được xử lý để tính toán các chỉ số đánh giá. Để tăng hiệu quả hoạt động của chương trình, tác giả cũng đã thực hiện tạo index trên các trường dữ liệu cần thiết để tránh thắt cổ chai, và tối ưu các tham số cấu hình trong my.ini.
Trong quá trình chạy thử nghiệm, cơ sở dữ liệu đang sử dụng có tên PubGuru, hoạt động trên localhost, cổng 3306, username root, password root.
Web server:
Hệ thống có thể được triển khai trên bất kì web server nào hỗ trợ Java, JSP, đề tài này triển khai hệ thống trên web server GlassFish 3.1.1. GlassFish [GF] là một application server mã nguồn mở miễn phí được phát triển bởi Sun và bây giờ được tài trợ bởi Oracle. GlassFish hỗ trợ tốt tất cả các đặc tả tiêu chuẩn của Java hiện nay. GlassFish được xây dựng dựa trên mã nguồn của Sun và ứng dụng hệ thống TopLink của Oracle, nó cũng ứng dụng Apache Tomcat để làm servlet container, và bổ sung thêm các tính năng như Grizzly.
Trong quá trình chạy thử nghiệm, web server GlassFish được cấu hình để hoạt động trên localhost, cổng http 8080, cổng https 8181, cổng admin 4848.