1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Hệ thống thông tin: Xây dựng website diễn đàn chia sẽ bài viết và sử dụng kỹ thuật tìm kiếm toàn văn

194 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Website Diễn Đàn Chia Sẻ Bài Viết Và Sử Dụng Kỹ Thuật Tìm Kiếm Toàn Văn
Tác giả Nguyen Duy Hieu, Trinh Ngoc Vinh
Người hướng dẫn ThS. Mai Xuân Hựng
Trường học Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Kỹ sư ngành hệ thống thông tin
Thể loại khóa luận tốt nghiệp
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 194
Dung lượng 52,68 MB

Nội dung

Dé dap ứng nhu cầu của một người quản lý ứng dụng thì diễn đàn được xây dựng giúp quản lý các nội dung có trên ứng dụng, cấu hình các quyền và vai trò phù hợp cho các người dùng hay cấu

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN

KHOA HE THONG THONG TIN

NGUYEN DUY HIEU TRINH NGOC VINH

KHOA LUAN TOT NGHIEP

XAY DUNG WEBSITE DIEN DAN CHIA SE BAI VIET

VA SU DUNG KY THUAT TIM KIEM TOAN VAN

(FULL-TEXT SEARCH) Build a forum website to share articles and using

full-text search

KY SU NGANH HE THONG THONG TIN

TP HO CHi MINH, 2022

Trang 2

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA HE THONG THONG TIN

NGUYEN DUY HIEU - 18520746

TRINH NGOC VĨNH - 18521660

KHOA LUAN TOT NGHIEP

XAY DUNG WEBSITE DIEN DAN CHIA SE BAI VIET

VA SU DUNG KY THUAT TIM KIEM TOAN VAN

(FULL-TEXT SEARCH)

Build a forum website to share articles and using

full-text search

KY SU NGANH HE THONG THONG TIN

GIANG VIEN HUONG DAN

ThS Mai Xuân Hùng

TP HÒ CHÍ MINH, 2022

Trang 3

DANH SÁCH HOI DONG BẢO VỆ KHÓA LUẬN

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định 86

ngày của Hiệu trưởng Trường Đại học Công nghệ Thông tin.

——— — Chủ tịch.

— == ~ Thư ký.

— — Ủy viên.

—Uy viên.

Trang 4

LỜI CẢM ƠN Đầu tiên, nhóm xin gửi lời cảm ơn chân thành đến thầy Mai Xuân Hùng (Giảng viên hướng dẫn) đã giúp cho nhóm thực hiện đề tài này Thầy đã trực tiếp hướng dẫn tận tình, sửa chữa và đóng góp nhiều ý kiến quý báu giúp nhóm hoàn thành tốt báo cáo của mình Trong thời gian thực hiện đề tài, nhóm đã vận dụng những kiến thức nền tảng đã tích lũy đồng thời kết hợp với việc học hỏi và nghiên cứu những kiến thức mới Từ đó, nhóm vận dụng tối đa những gì đã thu thập được đề hoàn thành một báo

cáo tốt nhất Tuy nhiên, trong quá trình thực hiện, nhóm không tránh khỏi những thiếu sót, các việc làm sơ ý Chính vì vậy, nhóm rất mong nhận được những sự góp ý từ phía

thầy nhằm hoàn thiện những kiến thức mà nhóm đã học tập và là hành trang để nhóm bước tiếp trong tương lai.

Xin chân thành cảm ơn thay.

Trang 5

MỤC LỤC

Chương I Tổng quan đề tài 222:-222222 2 vttEEEEELrrrirrrrrrrrrrrrrree 1.1 Phân tích khảo sát các nhu cau từ trải nghiệm thực tế -+ 1.1.1 _ Các tính năng can thiết đối với người dùng thường -

1.1.2 Các tính năng cần thiết đối với người dùng thường quản trị

1.2 Chức năng của diễn đàn -22-©22++ 22+ 22221222112221122211 2211211 E1 crrrve+

1.3 Các quy trình của người dùng có trong diễn đàn ¿©2ccccccccsrsccee

1.3.1 Quy trình tạo bài viẾt .ccc222 2x cSEEEvrrrEEEErrrrrtkrrrrrrrrrrrrrree

1.3.2 Quy trình xác thực tài khoản ¿- ¿+ ¿+ + St key

1.3.3 Quy trình sửa, đặt lại mật khẩu -.-:-+c222vsvcetcrxerrcrrrvee 1.3.4 Quy trình báo cáo nội dung không phù hợp, góp ý cho diễn đàn 1.4 Các công nghệ được lựa chọn trong dé phát triển ứng dụng

1.4.1 Cấu trúc của ứng dụng và dự án -ccc2222cvvvccrrrrrrrex

1.4.2 _ Single-Page Application (SPA) -c-c-cccccterrerreerererree

1.43 — Angular.

1.4.4 Node Package Manager (NPM|) - «5c Se St

1.4.5 ASP.NET Core API

1.4.6 Entity framework (E) c: + + sseheeerieeereree

1.4.7 Language-Integrated Query (LinQ)

1.4.8 _ PostgreSQL Ăn HH ưệp

1.4.9 Tìm kiếm toàn văn (Full-text search)

1.4.10 Tìm kiếm toàn văn trong PostgreSQL -ccccccccc+

1.4.11 Kiểu dữ liệu JSON trong PostgreSQL -.-: cczcc5scccscz

1.4.12 PostgreSQL va Entity framewOrk - ¿5555 Sc+c+ccserreererer

Trang 6

Chương 2.

2.1 Sơ đồ Usecase.

Thiết kế hệ thong - 2 2222222222+222ESE2tEEESEEttEEEErrrtrrrrrrrrrrrree 20

2.2 Đặc tả S€CaS€ - 2L SH H9 H9 nh ng Tu TH Thu nu ng nh Hà 22

Chương3 Cơ sở dữ liệu

3.1 Mô hình cơ sở dit liệu và Chi tIỄ( ¿5+ Sc St +t 2 xSxEkekekerrerrrrrevee 23

3.1.7 Chỉ tiết bảng admin_user_role_ OŸ_ S€T - ¿c5 5cxs+s£*c++see 29 3.1.8 Chỉ tiết bảng session_admin_ uS€T- ¿+5 5+s++x£+zererexsee 30 3.1.9 Chỉ tiết bảng session_ sOcial_ USeT -5- 52 c+s<<++c+csce ce SO) 3.1.10 Chi tiết bảng social_audi(_ ÏOg - +5+55+c+c+csceeseceesre .3 Í

3.1.11 Chi tiết bảng social_categOrV 22cccc222vztceEcvvrrrrrrrvrrerrrrrrrrrr 32 3.1.12 Chi tiết bang social_commMentt 00.0 cece <5 5S S‡E+‡keEexerrkrkeree 33 3.1.13 Chi tiết bảng social_notification .cc-c-522cccvcerrsrrrrrrrreerree 34 3.1.14 Chỉ tiết bảng social_post ¿-22222cvccstrEErrtrrrrrrrrrrrrrrrree 35

3.1.15 Chi tiết bảng social_post_cate gory cccccscssssessessssesssssseesessssessssssseeseessees 36 3.1.16 Chi tiết bang social_post_tag ccccscssssssssssesssssssesssssssessesssesesssseesesssseeeee 36

3.1.17 Chi tiết bảng social_report sccccccsssesssssssescsssseescsssuesssssisecesssieeeesssnees 37 3.1.18 Chi tiết bang social_tag ccccccccssssssssssesssssssescsssueescssssecssssseeesssueeeessnneees 38 3.1.19 Chỉ tiết bảng social_user sccccccsssssssssssssccssssecsssssessssssesecsssuscessseesesssess 39

Trang 7

3.1.20 Chi tiết bảng social_user_action_with_category -c- - 40 3.1.21 Chitiết bảng social_user_action_with_comment.

3.1.22 Chi tiết bảng social_user_action_ with_ pOSỂ c+c<<c<cccsee 40 3.1.23 Chi tiết bảng social_user_action_with_tag.

3.1.24 Chitiết bảng social_user_action_ with_ uS€T «55c 41

3.1.25 Chi tiét bang social_user_audit_log

3.1.26 Chi tiét bang social_user_right 00.0 ceeeeeeseeeeseeeseeeeeeeneeeeereeeeeeneeeeeeeee 42 3.1.27 Chi tiét bang social_user_role

3.1.28 Chi tiét bảng social_user_role_ detail ‹ - < s5++++x+csxererzxecee 43 3.1.29 Chitiết bảng social_user_rol€_ OŸ_ US€T - ¿5-5-5 <2 <5++++x2ss< 43 3.1.30 Chi tiết bảng redirect_url -¿:¿222222vvvv+etttEEEkkxrrrrrrrrrrrrrrerree 44 3.2 Thiết kế “search vector” trên bảng social_post -cccc cccccvcee 44

3.3 Thiết kế “search vector” trên bảng social_ user -cc5ccsscc2 45 3.4 Thiết kế “search vector” trên bảng social_audit_log, admin_audit_log,

SOCIal_ uS€T_ aUdi(_ ÏOE es 6xx S11 1 1 1E ngư 45 3.5 Áp dụng tìm kiếm toàn văn và ứng dụng khác của PostgreSQL 46 3.5.1 Tìm kiếm bài viết 222222cc2 22222 trtEEEEEErrrrrrrrrrrrrrrrrerrrreg 46 3.5.2 Tìm kiếm vài viết đã thích, xem gần đây -ccccce+ccez 46

3.5.3 Gợi ý bài viết cho người dùng -:©222ccsc2cvvrrerrrrvrrerrrrrrrcre 48 3.5.4 Gợi ý bài viết cho các bài viết cccc222vctceccrvrrrrrrrtrrerrrrrrrerr 50

3.5.5 Thiết kế câu truy vấn thống kê bài viết theo thời gian - 51

Chương 4 Giao diện Ứng dung eeeccceeeceseeseseseeteneseseseeeeseseseseseeseasssseaneeesensees 52

4.1 Giao diện trang người dùng - - + thư 52

4.1.1 _ Trang chủ - Ăn HH HH ưy55

Trang 8

4.1.2 Trang đăng nhập, đăng ky 5 Ăn HH HH ghe62

4.1.3 Trang xác nhận email, quên mật khâu ¿ -¿z +22 654.1.4 _ Trang bài viẾt -©c + E21 212122111011211211 11111111111.664.1.5 _ Trang chỉ tiết bài viẾt - cSe tk EEEEEE112112112121 11111.674.1.6 _ Trang tạo bài Vidt oo eeeeceeccccccesseesessessessessessssecsssessessessessssessessessessesessees 704.1.7 Trang chỉnh sửa bài Viét c.ceceeesessessessesesesessessessessessessesesessesseseessees 734.1.8 _ Trang tìm kiếm c-©+++2kSEkCEEEEEEEEEEEEEEEEerkrerkrrrrees 744.1.9 Trang danh sách bài viết theo thẻ, danh mục: -««- 76

4.1.10 Trang thông tin người dùng - - 5 + sư nrưy77

4.1.11 Trang quan lí của người dùng - -. 5 - << «+ ret78

4.1.12 Trang thay đôi mật khâu - 2 2+ 2E +k+EE£EE£EE+EE£EEzEerkerkerxrrsres 80

4.1.13 Các trang báo 16: eecccccccccceccesteseeseeseeseesessesseseeseeseeseesesssausateseeseeseeseesees 84

4.2 Giao diện trang QUAN ẦTỊ - + - + E120 1E 91011 9101991 1 He rvrg S6

4.2.1 _ Trang đăng nhập - Ăn HH ngư 87 4.2.2 Trang chủ quản tTỊ - -c- Ăn nh ng ngư 88

4.2.3 Quản lí bài ViGtL cece cececcccccessessesssssessesseesessuesseesessessussusssessessessseeseesess 894.2.4 Thống kê bài ViẾt ¿ 2¿©2++22+2Ek22E2212211221221 21121 22crree 91

4.2.5 Quản lí danh mục, thẻ - c5 55 c2 1113113222111 E£EE5EEExeessee 93

4.2.6 Quản lí vai trò, quyền của vai trò cho người quản trị và người dùng 27

4.2.7 Quản lí người dùng - ch HH HH giết 104

4.2.9 Quản lí cấu hình ứng dụng -¿- 5+ ©2+©+++x++zxtzxevrxesrxesred 107

4.2.10 Quan lí tài khoản của người QUAN fTỊ - - 5 55 + xssssveseeseeres 109

4.2.11 Trang không có quyền quản tị - 2 2 2+s£+s+E+£x+E++E+zEzxzeered 110

Trang 9

4.3 Cài đặt và triển khai dự ấn -¿-¿- St St+E+EEtSESEEEEEESEEEEEESESEEEESEEEEEkrkrkrrrreea 111

4.3.1 Amazon Elastic Compute Cloud (Amazon EC2) - «<- 111

4.3.2 Github ACION HH9 TH Thu HH nh 112

Chương 5 Tổng kết - ¿2-52 SE EESEEEEEEEE2E12E2171717111211 1.1 eU 114

5.1 Các hướng phát triển và khả năng mở rộng - + ¿+ + ++sz+£zzxzzxe+ 114

5.1.1 _ Hỗ trợ nhiều ngôn ngữ - :- 2 2+S2+E£+E£EESEEEEEEEEEEEEEkrrrrrerrees 114

5.1.2 _ Thống kê, xếp hạng người dùng - 2-2 2+ £+zx+rx+zEezxerrxees 1155.1.3 Mở rộng cấu hình ứng dung -¿- 2+++xz+E++Exerxerxezrerrsees 115

5.2 Kết QUA Gat QUOC 1n 1165.3 Khó khăn trong việc thực hiện đề tài -¿- 2-5 E2£+zEtzxerxrrresrxrred 116

PHU LUC 954 /.ểể << ` 118

Trang 10

DANH MỤC HÌNH ẢNH

Hình 1.2.1: Sơ đồ Use-case mô tả chức năng chính của diễn đàn 5Hình 1.3.1: Các trạng thái và hành động thay đổi trạng thái của bài viết 6Hình 1.4.1: Mô hình ứng dụng trién khai - - 2 2 s52 22 E£+E££EeEEeEEerxerxzrszes 8

Hình 2.1.1: Use case chính của ứng dụng - - «+ xsxnnnn ng nrikt 20

Hình 2.1.2: Chi tiết usecase của người dùng khách 2: s©sz+2s+cx+zxezsz 21Hình 2.1.3: Chi tiết usecase của người dng ceccecscsssessseessecssesseessecssecstesseessecsseess 21

Hình 2.1.4: Chi tiết usecase của người dùng quản trị - 2 sc+sz+cs+cssrxczez 22

Hình 3.1.1: Mô hình cơ sở dữ liệu của người dùng quan trỊ ‹++-«++s+ 23

Hình 3.1.2: Mô hình cơ sở dữ liệu của người dùng thường, bài viết, danh mục, thẻ,

bình luận - 2E E22 1162231161153 11 9311111931 11 8051 1 191kg KH KH ky 24

Hình 3.1.3: Mô hình cơ sở dữ liệu về người dung thường, quyền và vai trò 25Hình 3.1.4: Mô hình co sở dit liệu về bang lưu cấu hình và các đường dẫn truy cập

có trong bài VIẾT s22 2k 1521121157171121121111111211111111111 21101111 x re.26

Hình 4.1.1: Giao diện trang chủ chế độ sáng, ngôn ngữ tiếng Anh (chưa đăng nhập)

Hình 4.1.3: Giao diện trang chủ chế độ tối, ngôn ngữ tiếng Anh (chưa đăng nhập) 56

Hình 4.1.4: Giao diện trang chủ chế độ sáng, ngôn ngữ tiếng Anh (đã đăng nhập).57

Hình 4.1.5: Giao diện trang chủ chế độ xem cỘP -¿- - tsx+xvEvE+EeEerxrkerereree 57

Hình 4.1.6: Giao diện trang chủ trên thiết bị di động -c + s+ssseeeesee 58Hình 4.1.7: Giao diện thanh điều hướng ở màn hình nhỏ (đã đăng nhập) 59Hình 4.1.8: Giao diện thanh điều hướng ở màn hình nhỏ (chưa đăng nhập) 59

Hình 4.1.9: Giao diện cửa số tìm kiếm -¿ cccccrtrtirrrrirrrrirrrrirrriririio 60

Hình 4.1.10: Giao điện đăng XuẤt - 2-2 2S SE9SEEEEEEEEEEEEEEEE21221 21212 EEcree 61Hình 4.1.11: Giao điện cửa sỐ ðÓp Ý -¿- 2 252 SESEEEEEEEEEEEEE2E2EEEEEEEEEEerkrree 62Hình 4.1.12: Giao diện trang đăng nhập chế độ sáng 2 ¿2 5 s+cs2 +2 63Hình 4.1.13: Giao diện trang đăng nhập chế độ tối - 2 25c 5 s2 s+£s2 +2 63

Trang 11

Giao d

Giao d Giao d Giao

Giao d

Giao d Giao d

Giao d

Giao d Giao d Giao

Giao d

Giao Giao d Giao d Giao d Giao d Giao d Giao d Giao Giao d Giao d

Giao

Giao d Giao d

iện phiên đăng nhập hết hạn -: +£©++zsscez 64

liện trang đăng KY St stvsteerkrrrrrerrrrkerrkrrrd 64

iện trang quên mật khẩu người dùng - 65 IbNirif 0 1 07 66

iện trang chỉ tiết bài viết chế độ sáng -. -cc¿ 67

ién trang chỉ tiết bài viết chế độ tối - -c 67 iện trang chỉ tiết trên thiết bị di động - - 68 iện trang bài viết (bình luận, bài viết liên quan) 69

liện báo cáo bài viết, bình luận, người dùng - 69

iện trang tạo bài viết l .c¿222vz+c2crvrrrerrrkrrrrrrrsvee 70 liện trang tạo bài VICE 2 à 00L THỰ 112121 71

liện trang tạo bai viết 3 (trình chỉnh sửa HTML) 71

liện trang tạo bài viết 3 (trình chỉnh sửa Markdown) „72 iện trang chỉnh sửa bài viết

liện xác nhận chỉnh sửa bài việt

iện trang tìm kiếm «74

iện trang tìm kiếm bai viết 75 iện trang tìm kiếm người dùng -¿- z2 75

in trang danh sách bài viết theo thẻ - 76

iện trang danh sách bài viết theo danh mục 76

liện trang thông tin người dùng -c+-cccx+cccxcce T7

iện trang hồ sơ cá nhân ¿-++2+++++2v+zr+rzssree 78

iện trang chỉnh sửa hồ sơ cá nhân . - 79

liện trang bảo mật tài khoản - ¿+ +++s+x+x+x+vrerereee 79

iện trang thay đổi mật khẩu - -¿-c++2++c+cczvscee 80

iện trang quản lí bài viết c+++2222cvvvzrrrrrrrrrxxee §0 liện trang danh sách bài viết đã lưu, đã thích, đã xem và đang

Trang 12

Hình 4.1.42: Giao diện trang danh sách người dùng đang theo dõi bạn 82

Hình 4.1.43: Giao diện trang thông báo ¿+ ¿5+ St *v£vxeEeketeterrrererrrevee 83 Hình 4.1.44: Giao diện trang lỗi không tìm thay -¿©zcz+22sscez 84 Hình 4.1.45: Giao diện trang từ chối truy cập - ::©vz++2ccvvrrecrvsrrrrr 85 Hình 4.1.46: Giao diện trang lỗi hệ thống - ¿¿©2+++22++zt+22+zerrrrrscez 85 Hình 4.2.1: Giao diện trang đăng nhập người quản tr] -. -‹-5-<++ 87 Hình 4.2.2: Giao diện trang chủ quản tTỊ ¿-¿- - + ++++k+£xekeEkrkekererrkrkrkeree 88 Hình 4.2.3: Giao diện trang quản lí bài ViẾP - ¿-222z+222vvzreevvvvrrerrrrrrrrrr 89 Hình 4.2.4: Giao diện xem và duyệt bài VIẾT, à ng erey90 Hình 4.2.5: Giao diện xem nội dung chỉnh sửa của bài VIẾK sccccccccccrreeecerrree 90 Hình 4.2.6: Giao diện trang thống kê số lượng bài viết (dạng cộ) 91

Hình 4.2.7: Giao diện trang thống kê số lượng bài viết (dạng đường) 92

Hình 4.2.§: Giao diện trang thống kê bài viết dạng cột nhóm theo tuần Hình 4.2.9: Giao diện trang quan lí danh mục

Hình 4.2.10: Giao diện chỉnh sửa danh mục 94 Hình 4.2.11: Giao diện tạo mới danh mục 94 Hình 4.2.12: Giao diện trang quan lí thẻ 95

Hình 4.2.13: Giao diện chỉnh sửa thẻ - (2S S222 SE££E+E£vE+eEeEeexetrexrvrerevxes 95 Hình 4.2.14: Giao diện tạo mới thẻ - ¿+ 23c 23t S3 EvE+vEetxrxerrrsrrxetrrrrrrrrsrrr 96 Hình 4.2.15: Giao diện trang quản lí vai trò của người quản tTỊ ‹ -+97

Hình 4.2.16: Giao diện chỉnh sửa vai trò của người quản trị -. -+ 98

Hình 4.2.17: Giao diện tạo mới vai trò cho người quản tTỊ - - 5+ <<98 Hình 4.2.18: Giao diện trang quản lí quyền của vai trò cho người quan trị 99

Hình 4.2.19: Giao diện chỉnh sửa quyền của vai trò cho người quản trị 99

Hình 4.2.20: Giao diện tạo mới quyền của vai trò cho người quan trị 100

Hình 4.2.21: Giao diện trang quan lí vai trò cho người dùng 100

Hình 4.2.22: Giao diện chỉnh sửa vai trò cho người dùng - + + 101

Hình 4.2.23: Giao diện tạo mới vai trò cho người ding -:-+ 101

Hình 4.2.24: Giao diện trang quản lí quyền của vai trò cho người dùng 102

Trang 13

Hình 4.2.25:

Hình 4.2.26:

Hình 4.2.27:

Hình 4.2.28:

Hình 4.2.29:

Hình 4.2.30:

Hình 4.2.31:

Hình 4.2.32:

Hình 4.2.33:

Hình 4.2.34:

Hình 4.2.35:

Hình 4.2.36:

Giao d Giao d

Giao d

Giao d Giao d Giao

Giao d

Giao d Giao d

Giao d

Giao d

iện chỉnh sửa quyền của vai trò cho người dùng

iện tạo mới quyền của vai trò cho người dùng

lện trang quản lí người dùng - + + ++++<+xexeree lện chỉnh sửa người dùng - ¿+ - c5 ssx+eexsrsree liện trang quản lí người QUAN tTỊ «+ s=e<+x+s+++z++ liện chỉnh sửa người quản tTỊ -. -‹- +5: 5+5<+<+x++ec++ liện tạo mới người QUAN tT] - - 5< + ++x+x+xexerxrkexereree iện trang quan lí cấu hình của ứng

dụng . én chỉnh sửa cấu hình ứng dụng -++

iện trang đổi mật khẩu dành cho người quản trị

lện trang bảo mật tài khoản cho người quản trị

Giao d iện trang không có quyền truy cập quản

trị -02

04

04 05 05

06

07 08

09

09 10

Trang 14

DANH MỤC BANG

Bang 3.1: Cau trúc dữ liệu của bảng admin_audit_ log : 5c©5z25scs+zxc>sz 27 Bang 3.2: Cau trúc dữ liệu của bảng admin_base_cOnfig 2- 2 s52 27

Bảng 3.3: Cấu trúc dit liệu của bảng admin_ user - 2 252 se x+£x+zzzszse2 28 Bảng 3.4: Cau trúc dữ liệu của bảng admin_user_right .2- ¿55255552 28 Bảng 3.5: Cấu trúc dữ liệu của bảng admin_ user_ rỌ€ - «+ +s«++s<++e+sex++ 29

Bảng 3.6: Cấu trúc dữ liệu của bảng admin_user_role_ detail ‹++- 29

Bảng 3.7: Cấu trúc dữ liệu của bảng admin_user_role_ OŸ_ use€r - -‹ 29

Bảng 3.8: Cấu trúc dữ liệu của bang session_admin_ uS€T «-+ «<+s<s++ 30 Bảng 3.9: Cấu trúc dữ liệu của bang session_ sOCIal_ US€T «<++<s<+<<ss+ 30 Bảng 3.10: Cấu trúc dit liệu của bảng social_audit_log -: -: -5: 3l Bảng 3.11: Cấu trúc dữ liệu của bảng social_€ategOrV -©¿csc©cscxsccsz 32 Bảng 3.12: Cấu trúc dữ liệu của bảng admin_user_role_ OŸ_ uS€r - ‹‹ 33

Bảng 3.13: Cấu trúc dữ liệu của bảng social_notification . ¿-s¿s-=5+ 34 Bang 3.14: Cấu trúc dữ liệu của bảng social_pOSỂ -2 22 2 ++x+zEe+zs+rxerxcrez 35 Bang 3.15: Cấu trúc dit liệu của bảng social_post_€af€ðOFY -. -5- 555552 36 Bảng 3.16: Cấu trúc dữ liệu của bảng social_post_ tag -¿ 5¿©csc55+ccs+ 36 Bảng 3.17: Cấu trúc dit liệu của bảng sOcial_ report :s¿©5¿©csz+cs+zssscsz 37 Bang 3.18: Cấu trúc dữ liệu của bảng social_ tag -5- 2 2 z+cecxezxerxerxerszree 38 Bảng 3.19: Cấu trúc dữ liệu của bảng SOCIaÏ_ US€T - 5 + +ssssessseeesee 39 Bảng 3.20: Cấu trúc dữ liệu của bảng social_user_action_with_category 40

Bang 3.21: Cấu trúc dữ liệu của bảng social_user_action_with_comment 40

Bang 3.22: Cấu trúc dữ liệu của bảng social_user_action_with_post - 40

Bảng 3.23: Cấu trúc dữ liệu của bang social_user_action_with_tag - 41

Bang 3.24: Cấu trúc dữ liệu của bảng social_user_action_with_user - 41

Bang 3.25: Cấu trúc dữ liệu của bang social_user_audit_ ÏOg -««+-<«+ 42 Bang 3.26: Cấu trúc dữ liệu của bảng social_user _right 5-55 secszss2 42 Bảng 3.27: Cấu trúc dữ liệu của bảng socIal_ user_rỌÌ€ - -«++s<x+++sx+s+ 43 Bảng 3.28: Cấu trúc dữ liệu của bang social_user_role_ detaIl -«+ 43

Trang 15

Bảng 3.29: Cấu trúc dữ liệu của bảng social_user_role_ OŸ_S€T

-«-Bảng 3.30: Cấu trúc dữ liệu của bảng redirect_url - -.-«+- «<< £++se+seeeesee

Trang 16

DANH MỤC TU VIET TAT

STT Tên viết tắt Tên đầy đủ Dich ra tie ng Việt(Nêu là tiêng Anh)

1 BE Back-End Máy chủ web

2 |FE Front-End Giao diện người dùng

3 SPA Singlel-Page Application

4 |EF Entity Framework

5 | NPM Node Package Manager

6 |FTS Full-text search Tim kiém toan van

7 Amazon EC2, EC2 | Amazon Elastic Compute Cloud

Trang 17

TÓM TÁT KHÓA LUẬN

Nhắm tới việc phát triển của các mạng xã hội, các diễn đàn, diễn đàn cá nhân

nơi mọi người có thé chia sẻ kiến thức, kinh nghiệm, trải nghiệm khác trong đời sống Mục đích của đề tài xây dựng một diễn đàn chia sẻ các kinh nghiệm, kiến

thức về ngành công nghệ thông tin Gồm các tinh năng hỗ trợ người dùng như tìm

kiếm, lưu trữ, chia sẻ thông tin và tính năng giúp quản lý diễn đàn như quản lý quyền kiểm soát các thông tin nội dung trên diễn đàn.

Rõ ràng hơn với các tính năng trên, diễn đàn được xây dựng giúp người dùng

tương tác với nhau qua việc chia sẻ kiến thức, kinh nghiệm và bàn luận giúp nhau

giải quyết các vấn để là nơi mọi người có thể tìm kiếm và truy cập lại những thông tin cần thiết Ngoài ra diễn đàn còn hỗ trợ người dùng quản lý các nội dung bản thân

đã chia sẻ, nội dung ưa thích Dé dap ứng nhu cầu của một người quản lý ứng dụng

thì diễn đàn được xây dựng giúp quản lý các nội dung có trên ứng dụng, cấu hình các quyền và vai trò phù hợp cho các người dùng hay cấu hình người diễn đàn cho

phù hợp với người dùng.

Diễn đàn được xây dựng và hoàn thiện các tinh năng cơ bản và can thiết dé

có thể đáp ứng được nhu cầu của người dùng và người dùng quản trị Tuy còn các hạn chế như thiếu các cách giao tiếp giữa các người dùng với nhau, thiếu các báo

cáo trực quan về hành vi của người hỗ trợ cho việc quan trị diễn đàn nhưng diễn đàn

trên được xây dựng và đáp ứng tốt các nhu cầu cơ bản.

Trang 18

Chương 1 Tổng quan đề tài 1.1 Phân tích khảo sát các nhu cầu từ trải nghiệm thực tế

- Để có thể liệt kê các tính năng cần thiết và cơ bản cho một diễn đàn, nhóm

đã trải nghiệm các diễn đàn nồi tiếng về chia sẻ kiến thức, van đề, giải pháp

trong ngành công nghệ thông tin như: Stack Overflow, Database Admintractors Stack Exchange, Unix & Linux Stack Exchange, Stack

Exchange Network Tham khảo các thiết kế một số trang diễn đàn cá nhân

về lĩnh vực công nghệ thông tin có nhiều lượt xem ở Việt Nam như How Kteam, Tôi đi code đạo, Tinh tế, TECHRUM.VN Ngoài ra còn các diễn đàn

nổi tiếng với nhiều lĩnh vực như Cookpad, Reddit và các mạng xã hội với

mục tiêu tìm hiểu các thói quen, yêu cầu nào cần thiết và dư thừa đối với một diễn dan chia sẻ kinh nghiệm.

1.1.1 Các tính năng cần thiết đối với người dùng thường

- Với việc khảo sát các diễn đàn chia sẻ kiến thức, giải pháp trong ngành công

nghệ thông tin thu được các tính năng cơ bản sau:

e - Đăng nội dung, câu hỏi (bài viết)

© - Giải đáp phản hồi các bài viết (bình luận)

e _ Thể hiện sự yêu thích, đồng tình của bản thân với các nội dung

e Truy xuất, tìm kiếm các nội dung đã thích, đã xem, nội dung tương tự

- Về tính năng của các diễn đàn, diễn đàn nồi tiếng ở Việt Nam không có thay

đổi nhiều với các tính năng kể trên nhưng có thể tham khảo và lựa chọn

hướng thiết kế giao diện phù hợp với người dùng hiện thời.

- Tham khảo qua các diễn đàn, mạng xã hội nổi tiếng với nhiều lĩnh vực, rút ra

được các yêu cầu của một diễn đàn là cần quan tâm đến trải nghiệm người dùng:

e Tw thiết kế thân thiện

© _ Có hướng dẫn chỉ tiết về các bước hay các logic của dién đàn

© _ Có tùy biến theo từng người dùng

Trang 19

- Và yêu cầu khác về kết nối người dùng với nhau nhưng đối với một diễn đàn

chia sẽ kinh nghiệm trong lĩnh vực công nghệ thông tin thì các yêu về kết nối

người dùng với nhau là khá dư thừa

- Sau các tham khảo và tự trải nghiệm thì diễn đàn mà nhóm xây dựng sẽ tập

trung vào:

e_ Tiếp cận nội dung dé dàng:

"_ Hỗ trợ tìm kiếm truy vấn với các bộ lọc đặc biệt

" Gợi ý các nội dung tương tự hay dựa vào hành động của người

dùng

" Các giao diện thân thiện va dé dùng

e Dễ dàng quản lý các nội dung:

= Các hướng dẫn gợi về việc quản lý nội dung phải chỉ tiết

= Người dùng có toàn quyền với những nội dung của riêng tư

© Các quy trình phải đơn giản và dễ hiểu đối với người dùng

© C6 các thông báo kịp thời cho người dùng có thé cập nhật và theo dõi

se Quản lý các thông tin cá nhân

1.1.2 Các tính năng cần thiết đối với người dùng thường quản trị

- Để khảo sát khi với vai trò là một người quản trị diễn đàn thì sẽ cần các tính

năng nào, nhóm đã chọn giải pháp tham khảo các mô tả về các dự án mã nguồn mở xây dựng diễn đàn, mạng xã hội và có kết hợp với các tính năng

cần thiết của người dùng dé đưa ra kết quả mong muốn.

- Chức năng can thiết dé quản trị diễn đàn mà nhóm tổng hợp lại và đưa ra

được:

e Quản lý người dùng (người dùng quản tri)

e Vai trò của người dùng, quyền của các vai trò

© Quan lý các bài viết, nội dung khác được công khai trên diễn dan

© Quan lý các danh mục và các thẻ bài viết

Trang 20

e Diễn đàn phải đưa ra được các cấu hình giúp người quản trị thiết kế

diễn đàn cho phù hợp với hơn với người dùng (cấu hình về mẫu gửi

mail, hệ số tính bài viết xu hướng, gợi ý bài viết)

© H6 trợ truy vấn các hành động, thay đổi diễn ra trên diễn đàn 1.2 Chức năng của diễn đàn

- Được khảo sát và liệt kê từ phần trước nhóm sẽ tập trung xây các chức năng

chính cho diễn đàn như sau:

e - Với người dùng bình thường:

= Đăng ký tài khoản

"=_ Tìm kiếm các nội dung công khai

" Xem các nội dung công khai

" Quản lý bài đăng của bản thân

= Quản lý bình luận cua bản thân

= Quản lý thông tin của ban thân

= Bao cáo các nội dung không phù hop

" Tương tác với các nội dung công khai

" Quản lý phiên đăng nhập

= Gópý

e Với người dùng quản trị:

" Quản lý thông tin của bản thân

" Quản lý nội dung công khai

= Quan lý các bài đăng công khai

= Quan lý phiên đăng nhập quản tri

Trang 21

- Sơ dé Use Case:

Quản lý phiên đăng nhập quản trị

Quan lý các bai đăng

công khai Quản lý danh mục.

Tim kiếm các nội dung

công khai ‘Bang ký tài khoản

‘Quan lý bai đăng của

'Xem các nội dung

Quan lý thông tin ly thong công khaicủa bản thân

“Người dùng

Báo cáo các nội dung

không phủ hợp

Tương tác với các nội dung công khai

Quân lý phiên

dang nhập.

Hình 1.2.1: Sơ đồ Use-case mô tả chức năng chính của diễn đàn

Trang 22

1.3 Các quy trình của người dùng có trong diễn đàn

1.3.1 Quy trình tạo bài viết

- Trạng thái của bài viết:

© Cho duyệt (Pending): trạng thái khi người dùng tao bài viết và đang

chờ được phê duyệt đề thành bài viết công khai

© Chấp thuận (Approved): trạng thái khi bài viết đã thành bài viết công

khai

© Tw chối (Rejected): trạng thái khi bài viết bị từ chối chấp thuận thành

bài viết công khai

e Riéng tư (Private): bài viết có trạng thái này khi chủ sở hữu tạo bài

viết riêng tư hoặc là chủ sở hữu chuyền bài viết từ các trạng thái khác

về trạng thái riêng tư

© Đã xóa (Deleted): bài viết có trang thái này khi chủ sở hữu xóa (khi

bài viết bị xóa không ai có thể truy cập được.

- Những hành động chuyên trạng thái cho phép:

Private

Hình 1.3.1: Các trạng thái và hành động thay đổi trang thái của bai viết

Trang 23

Tạo bài viết:

¢ Nguoi dùng có thể tạo bài viết ở trạng thái riêng tư hoặc chờ duyệt.

© Sau khi tao bài viết người dùng cần được chờ duyệt dé bài viết được

công khai.

Thay đổi bài viết:

¢ Khi bài viết ở trạng thái chờ duyệt hoặc riêng tư các thay đổi của

người dùng lên bài viết sẽ lập tức được cập nhật.

© Néu trạng thái bài viết đã là chấp thuận khi người dùng thay đổi bài

viết những thay đổi đó cần được phê duyệt lần nữa dé có thể cập nhật lên bài viết (Nếu thay thay đổi của người dùng bị từ chối thì bài viết

vẫn không bị từ chối và vẫn là bài viết công khai với nội dung chưa thay đổi).

Chuyển trạng thái bài viết về riêng tư:

e_ Bất cứ khi nào khi bài viết chưa bị từ chối hoặc xóa người dùng có thé

chuyền trạng thái bài viết về riêng tư.

Công khai bài viết riêng tư:

© Khi trạng thái bài viết là riêng tư và người dùng muốn công khai bài

viết đó thì cần chuyền trạng thái chờ duyệt và chờ người quản trị phê

duyệt.

1.3.2.Quy trình xác thực tài khoản

Mỗi người dùng khi đăng ký tài khoản cần phải xác thực tài khoản, quy trình

nhằm xác thực email của người dùng, người dùng sau khi xác nhận email sẽ không được thay đôi email.

Email sau khi đăng ký tài khoản (nếu không nhận được email người dùng có thể yêu cầu gửi thư xác thực trong thông tin người dùng).

Khi nhắn vào đường dẫn hướng dẫn trang web xác thực người cần nhập lại mật khâu đề tiến hành xác thực tài khoản.

Trang 24

1.3.3 Quy trình sửa, đặt lại mật khẩu

- Người có thể sửa mật khẩu hoặc ép buộc phải sửa mật khẩu nếu mật khẩu

của người dùng hết hạn do chính sách mật khâu của trang diễn đàn Ngoài ra người ding có thể đặt lại mật khâu khi quên.

- Khi sửa mật khẩu người dùng cần điền mật khẩu cũ, mật khẩu mới và xác

nhận mật khâu mới.

- Khi đặt lại mật khâu người dùng sẽ nhận được email sau khi nhắn vào đường

dẫn người dùng sẽ nhập mật khẩu mới.

1.3.4 Quy trình báo cáo nội dung không phù hợp, góp ý cho diễn đàn

- Người dùng cần đăng nhập vào tài khoản của bản thân và có thể báo cáo về

các nội dung bài viết, bình luận, hành động của người dùng không phù hợp Ngoài ra người có thể nêu các góp ý cho diễn dàn.

- Sau khi báo cáo và báo cáo của người dùng được người quản trị dién đàn xử

lý sẽ có thông báo là báo cáo đã xử lý hay là bị bỏ qua.

1.4.Các công nghệ được lựa chọn trong dé phát triển ứng dung

Brower Web server

Hinh 1.4.1: M6 hinh tng dung trién khai

- Với mô hình ứng dụng trên nhóm đã tìm hiểu và quyết định triển khai phát

triển ứng dụng với các 2 dự án là thiết kế giao diện người dùng (Front-end)

và máy chủ web (Back-end) đảm nhiệm giao tiếp với cơ sở dữ liệu và xử các yêu cầu từ Front-end trả về.

- Front-end và Back-end giao tiếp với nhau qua RESTful APIs.

Trang 25

1.4.2 Single-Page Application (SPA)

Single-page application (SPA) [1] mô tả các trang web cập nhật lai nội dung

trang web bang dit liệu trả về từ máy chủ thay vì phải làm mới lại trang Mục

tiêu mang lại cảm giác sử dụng thoải máy khi các chuyên đổi của ứng dụng

web nhanh hơn.

Trong một trang web SPA, các đoạn mã HTML, JS, CSS được tải hết trongmột lần và trang web sẽ không bao giờ làm mới

Với việc phát triển một diễn đàn thì SPA là một phương án phù với các lợi

ích mang lại như nhanh và tối ưu về trải nghiệm đặc biệt là trải nghiệm trên

mobile.

Đối với việc triển khai SPA cho một diễn đàn thì nhược điểm là lần lầu truy

cập vào trang web sẽ rất nặng do phải tải tất cả các đoạn mã xuống nhưngsau đó lợi ích mang lại thì nhược điểm này không đáng quan tâm

1.4.3 Angular

Angular [2] là một framework thiét ké ung dung va nén tang phat trién dé tao

ra các ứng dung SPA, được xây dựng trên TypeScript (TypeScript là

JavaScript với các ràng buộc chặt chẽ về cú pháp là công cụ tốt hơn cho việc

phát triển ứng dụng)

Việc lựa chọn Angular dé phát triển cho dự án có các lý do sau:

e_ Một framework lớn với cộng đồng hỗ trợ vô cùng đông

e Là lựa chọn hàng đầu cho việc xây dựng SPA

e Được xây dựng trên TypeScript giúp việc phát triển tối ưu hơn

e_ Có một lượng lớn các thư viện, tiện ích từ cộng đồng hỗ trợ giúp việc

tập sử dụng Angular không quá khó hay nói cách khác là tương đối

đơn giản

Trang 26

1.4.4 Node Package Manager (NPM)

- Node Package Manager (NPM) là công cụ tạo và quản lý các thư viện lập

trình Javascript cho Node.js Các lập trình viên khắp nơi trên thé giới chia sẻ

hàng trăm nghìn các thư viện với các đoạn mã đã thực hiện sẵn một chức

năng nào đó Nó giúp cho các dự án mới tránh phải việt lại các thành phân cơ

bản, các thư viện lập trình hay thậm chí các framework.

- Uudiém:

Thực hiện việc quản lý đơn giản hơn rất nhiều Các thư viện đều cósẵn chỉ cần cài đặt và sử dụng, bạn chỉ cần chạy một dòng lệnh dé càiđặt và dé dàng sử dung chúng trong dự án của mình hơn.

Việc sử dụng thư viện có sẵn giúp tối ưu hóa các đoạn mã của chúng

ta hơn vì thư viện sẽ thay ta tối ưu.

- Nhược điểm:

Mỗi đoạn code có thé phụ thuộc rất nhiều các mã nguồn mở khác nên

có NPM sẽ giúp dễ quản lý các thư viện sẽ đỡ tốn nhiều thời gian và

công sức trong việc quản lý

Việc các thư viện cập nhật phiên bản của nhau dễ xảy ra xung đột

trong tương lai.

- Cac thư viện nồi bật được sử dụng trong dự án:

primeng: Thư viện cung cấp các thành phần có sẵn trên giao diện

trang web Kèm theo thư viện này còn có thư viện primeicons và

primeflex.

dayjs: Thư viện giúp tối giản hóa cú pháp hiển thị ngày giờ

lodash: Thư viện cung câp mô-đun, hiệu suât và các tính năng bô

sung, cung cấp các phương thức đã được đơn giản hóa về mặc hiệu

năng.

ngx-translate: Thư viện hỗ trợ đa ngôn ngữ giúp dễ dàng tạo nhiều

ngôn ngữ cho trang web.

10

Trang 27

1.4.5 ASP.NET Core API

ASP.NET Core là một web framework mã nguồn mở miễn phi được pháttriển bởi Microsoft là phiên bản kế nhiệm của ASP.NET

Với việc sử dụng ASP.NET Core phía máy chủ sẽ xây dựng một dịch vụ

cung cấp các RESTful APIs đáp ứng cho ứng dụng

Các lợi ích của việc sử dụng ASP.NET Core:

e_ Một framework đa nền tang

e Việc phát hành, triển khai một dịch vụ đơn giản

e_ Có một cộng đồng người dùng lớn với nhiều diễn đàn giải đáp các

thắc mắc Đặc biệt đứng sau được phát hành bởi ông lớn Microsoft

e_ Có hỗ trợ cơ chế chia sẽ mã nguồn là Nuget, nơi mà các nhà phát triển

có thê tìm thấy các mã nguồn hữu ích phù hợp cho dự án hay chia sẻ

mã nguồn của bản thân

1.4.6 Entity framework (EF)

Entity framework (EF) hỗ trợ các nhà phát triển có thé truy xuất đến cơ sở ditliệu dưới các đối tượng cụ thể mà không phải truy xuất đến các bảng, cột trên

cơ sở dữ liệu.

Với entity framework nhà phát triển sẽ giảm thiếu được các không cần thiết

và làm việc với mức độ trừu tượng cao hơn

Enity framework hỗ trợ lâp trình:

e_ Đa nền tảng, mô hình hóa: mô hình hóa các bảng trong cơ sở dit liệu

với thuộc tính được định nghĩa trước và sử dụng các mô hình dé truyvan hoặc lưu trữ vào cơ sở dữ liệu

e_ Truy vấn: hỗ trợ các câu truy vấn LINQ dé lấy dữ liệu bên dưới

e Nâng cap và cập nhật cơ sở dit liệu: nếu nhà phát triển cần phải nâng

cấp, cập nhật lại các mô hình cấu trúc dt liệu thay vì viết các câu lệnh

SQL thì nhà phát triển có thể dùng EF viết mã mô tả các hành động vàcòn lại dùng các câu lệnh dé thực thi đoạn mã đó

11

Trang 28

1.4.7 Language-Integrated Query (LinQ)

LINQ là tên của một tập hợp các công nghệ dựa trên việc tích hợp các khả

năng truy vấn trực tiếp vào ngôn ngữ C# Theo truyền thống, các truy vấn

đối với dữ liệu được biểu thị dưới dạng chuỗi đơn giản mà không cần kiểm

tra kiểu tại thời điểm biên dịch Hơn nữa, nhà phát triển phải học một ngônngữ truy vấn khác nhau cho từng loại nguồn dữ liệu: cơ sở dữ liệu SQL, tài

liệu XML, các dịch vụ Web khác nhau.

Với LINQ chỉ với một cú pháp truy van nhà phát triển có thé dùng và truycập đến các nguồn dữ liệu khác nhau như SQL, XML

Lợi ích khác của LINQ khi kết hợp với Entity Framework là giúp cho mãnguồn của nhà phát triển thích ứng được với nhiều phiên bản ứng dụng

Vi dụ như theo truyền thống dé truy vấn đến các cơ sở dit liệu SQL nhà phattriển cần viết các câu truy vấn thuần và nhà phát triển cần phải chú ý đến cácphiên bản cơ sở dit liệu dé câu tránh trường hợp câu truy vấn không được hỗ

trợ ở các phiên bản cũ nhưng với LINQ nhà phát triển chỉ cần viết truy vấn

với trực tiếp trong mã nguồn với cú pháp mà C# hỗ trợ và không cần lo lắng

về việc tương thích giữa các phiên bản ứng dụng

Nhờ đó mã nguồn của nhà phát triển sẽ dễ dàng cập nhật và tương thích với

các phiên bản khác của ứng dụng.

1.4.8 PostgreSQL

Một cơ so dữ liệu mã nguồn mở, miễn phí, mạnh mẽ, sử dụng và mở rộngcác ngôn ngữ SQL kếp hợp với nhiều tính năng giúp lưu trữ và làm việc vớicác dữ liệu phức tạp nhất

PostgreSQL đã tạo được danh tiếng mạnh mẽ về kiến trúc đã được chứng

minh, độ tin cậy, tính toàn vẹn của dữ liệu, bộ tính năng mạnh mẽ, kha năng

mở rộng va sự cống hiến của cộng đồng nguồn mở dang sau phần mềm dé

liên tục cung câp các giải pháp hiệu quả và sáng tạo.

12

Trang 29

PostgreSQL chạy trên tất cả các hệ điều hành chính , đã tuân thủ ACID.

PostgreSQL đã trở thành cơ sở dữ liệu quan hệ nguồn mở được nhiều người

và tổ chức lựa chọn

Việc lựa chon PostgreSQL làm cơ sở dữ liệu thay vi SQL Server có độ tương

tính cao với các ứng dụng ASP.NET:

e Là một cơ sở dữ liệu miễn phí và mã nguồn mở

e SQL Server tập trung lưu trữ dtr liệu cho các tính năng phân tích, báo

cáo phục vụ thương mại như (data warehouse, data analysis) điều đó

là dư thừa với ứng dụng mà nhóm chọn phát triển

e PostgreSQL hỗ trợ entity framework bao gồm các kiểu dữ liệu phức

1.4.9 Tìm kiếm toàn văn (Full-text search)

Tìm kiếm toàn văn bản cung cấp khả năng xác định các tài liệu ngôn ngữ tựnhiên đáp ứng truy van và tùy chọn dé sắp xếp chúng theo mức độ liên quanđến truy vấn Loại tìm kiếm phô biến nhất là tìm tat cả các tài liệu có chứacác cụm từ truy van nhất định và trả về chúng theo thứ tự tương tự với truyvan Các khái niệm về truy van và sự tương tự rất linh hoạt và phụ thuộc vàoứng dụng cụ thé Tìm kiếm đơn giản nhất coi truy van là một tập hợp các từ

và độ tương tự là tần suất xuất hiện của các từ truy van trong tai liéu

Với co sở dữ liệu PostgreSQL đã hỗ trợ các toán tử ~, ~*, LIKE, ILIKE cho

các xử lý trên các dữ liệu text, nhưng có các han chế như:

e Không hỗ trợ ngôn ngữ ngay với tiếng anh, có thé ví dụ là: categrory,

categories Người dùng sẽ có thé bỏ qua các tài liệu ‘categories’ khichỉ sử dụng từ khóa “category' trong mệnh đề WHERE

13

Trang 30

e Không cung cấp việc sắp xếp thứ tự tìm kiếm

e Cham vì không có các chỉ mục trên các dữ liệu văn bản được tìm

kiếm

Lập chỉ mục toàn văn bản cho phép các tài liệu được xử lý trước và lưu một

chỉ mục dé tìm kiếm nhanh chóng sau này Tiền xử lý bao gồm:

e Phan tích cú pháp tài liệu thành mã thông báo Sẽ rất hữu ích khi

xác định các lớp mã thông báo khác nhau, ví dụ: số, từ, tir phức, địachỉ email dé chúng có thé được xử lý theo cách khác nhau Về nguyên

tắc, các lớp mã thông báo phụ thuộc vào ứng dụng cụ thể, nhưng đối

với hầu hết các mục đích, sử dụng một tập hợp các lớp được xác địnhtrước là đủ PostgreSQL sử dụng trình phân tích cú pháp dé thực hiệnbước nay Trình phân tích cú pháp tiêu chuẩn được cung cấp và có thétạo trình phân tích cú pháp tùy chỉnh cho các nhu cầu cụ thể

e Chuyển đổi mã thông báo thành lexemes Lexeme là một đơn vị có

nghĩa từ vựng làm nền tảng cho một tập hợp các từ có liên quan vớinhau, ví dụ: run, running, ran, runs là các dạng giống nhau có chunglexeme là run PostgreSQL sử dụng từ điển để thực hiện bước này.Nhiều từ điển tiêu chuẩn khác nhau được cung cấp và những từ điểntùy chỉnh có thé được tao cho các nhu cầu cụ thé

e Lưu trữ các tài liệu được xử lý trước được tối ưu hóa cho việc tim

kiếm Ví dụ, mỗi tài liệu có thé được biểu diễn dưới dạng một manglexemes chuân hóa đã được sắp xếp Cùng với các từ vựng, người tathường mong muốn lưu trữ thông tin vị trí để sử dụng cho xếp hạngvùng lân cận, do đó, tài liệu chứa vùng từ truy vấn “dày đặc” hơn

được chỉ định xếp hạng cao hơn tài liệu có các từ truy vẫn rải rác

Hiện tai PostgreSQL đang hỗ trợ từ dién tích hợp san là tiếng anh, nên vớicác ngôn ngữ khác như tiếng việt thì các bước tiền xử lý ở trên cần được thựchiện thủ công trước khi được lưu trữ xuống PostgreSQL

14

Trang 31

1.4.10 Tìm kiếm toàn văn trong PostgreSQL

- Các cách sử dụng tìm kiếm toàn văn trong PostgreSQL: [3]

e Sử dụng không cần chỉ mục, ví dụ mô tả việc tìm kiếm nội dung của

trang web có chứa từ ‘friend’ với tìm kiếm toan văn Với việc này khiđối với dữ liệu lớn sẽ tốn tài nguyên và chậm dé có thể thực thi xong

SELECT title

FROM pgweb

WHERE to tsvector('english', body) @@ to_tsquery('english', 'friend');

e Dé khắc phục việc truy van chậm can tạo chi mục và truy vân theo chi

mục đó Cú pháp tạo chỉ mục cho câu truy vân trên:

CREATE INDEX pgweb idx ON pgweb USING GIN (to tsvector('english', body));

e Ngoài ra còn một cách tiép cận khác là tạo ra cột dữ liệu với kiêu dữ

liệu là ‘tsvector’ và tao chỉ mục trên cột dữ liệu đó và sử dụng trong

mệnh dé ‘where’:

ALTER TABLE pgweb

ADD COLUMN textsearchable index col tsvector GENERATED ALWAYS AS

(to_tsvector('english', coalesce(title, '') || ' ' || coalesce(body, ''))) STORED;

CREATE INDEX textsearch idx ON pgweb USING GIN (textsearchable index col);

SELECT title

FROM pgweb

WHERE textsearchable index col @@ to tsquery('create & table');

- Trong PostgreSQL hỗ trợ hai dang chỉ mục dé hỗ trợ tăng tốc tìm kiếm toàn

văn là GIN, GIST: [4]

e Với GIN nên được sử dụng với các dữ liệu ‘tinh’ là các dữ liệu có ít

thay đổi, là các loại dữ liệu như nhật ký ứng dụng Sử dụng GIN nên

các dữ liệu tĩnh sẽ cho hiệu năng tìm kiếm nhanh hơn

e GiST phù hợp cho các dữ liệu “động” là các dữ liệu được lưu trữ và có

thay đôi nhiều GiST phù hợp cho các loại dit liệu động vi được thiết

kế để cập nhật các chỉ mục nhanh hơn

- _ Hiện thực trong dự án nhóm chọn cách thứ 3 là ở các bảng nào có các dtr liệu

cần áp dụng tìm kiếm toàn văn thì sẽ tạo cột “seach_vecfor” và chỉ mục tưng

r

ung.

15

Trang 32

1.4.11 Kiểu dữ liệu JSON trong PostgreSQL

- Ngoài các kiểu dữ liệu cơ ban PostgreSQL còn hỗ trợ các kiểu dữ liệu phức

tạp như JSON và ngoài ra PostgresSQL còn hỗ trợ các hàm dé xử lý kiểu dữ

liệu JSON.

- Với việc cơ sở dit liệu hỗ các các kiểu dữ liệu phức tạp như JSON, XML,

HTML Giúp tránh sai lệnh dữ liệu do người dùng gây ra, ví dụ lưu tệp

JSON vào một cột trong cơ sở đữ liệu có kiểu là TEXT nêu ứng dụng hoặcngười dùng gây ra lỗi lầm cho dữ liệu được lưu bi thay đổi làm kiểu dữ liệumong muốn là JSON và gây ra các hệ quả khác như ứng dụng hoạt động

không đúng.

- _ Trong PostgreSQL với kiêu dữ liệu JSON ngoài việc lưu trữ và kiểm tra dit

liệu khi có thay đôi (trách việc thay đôi làm sai lệch dữ liệu) thì PostgresSQLcòn hỗ trợ các hàm và phương pháp dé truy van như: [5]

e Truy vấn JSON với mệnh đề điều kiện:

The array on the right side is contained within the one on the left:

SELECT '[1, 2, uM: : jsenb C “SE, „ la’ teen] Sond;

This array contains the primitive string value:

SELECT '["foo", "bar"]'::Jsonb @> '"bar"'::jsonb;

A top-level key and an empty object is contained:

SELECT '{"foo"; {"bar": "baz"}}'::jsonb @> '{"foo": {}}'::jsonb;

String exists as object key:

SELECT '{"foo": "bar"}'::jsonb ? 'foo';

16

Trang 33

e_ Các hàm áp dụng trên kiểu dữ liệu JSON:

Search in JSON with JSON path

jsonb_path_ query first (

Create a JSON array

Json build array(1, 2, 'foo', 4, 5) —>[1, 2, "foo", 4, 5]

Create a JSON object

json_build_object('foo', 1, 2, row(3,'bar')

— {"foo" ; 1, "2" ; ("£1:3,"£2"2"bar"})}

Check JSON contains JSON path

jsonb path exists (

'{"a":[1,2,3,3,5]}";

"S.a[*] ? (@ >= $min && @ <= Smax)',

'{"min":2, "max":4}!

) > true

- Kiểu dit liệu JSON sẽ phù hop cho các trường tùy chọn ví dụ như người

dùng sẽ có các tương tác với bài viết thay vì mỗi tương tác cơ sở dữ liệu phải

lưu các dòng khác nhau thì cơ sở dữ liệu chỉ cần lưu một dòng với cột tương

tác là kiểu JSON

Multiple line to save action user with post

post_id user_id action | timestamp |

Trang 34

1.4.12 PostgreSQL và Entity framework

Đã dé cập ở trên thì với Entity framework sẽ hỗ trợ nhà phát triển truy xuấtđến cơ sở dữ liệu dưới các đối tượng cụ thé vậy với các kiêu dit liệu đặc biệt

đã đề cập ở trên như “ts_vector” ‘json’ trong cơ sở dữ liệu PostgreSQL thì cóđược hỗ trợ và cách sử dụng như thế nào

Với kiểu dữ liệu JSON thì tương ứng với kiểu dit liệu ‘string’ trong C# và

Entity framework cũng có hỗ trợ các hàm tương ứng với PostgreSQL: [6]

.NET SQL

customer.Name customer- > >'Name'

customer.Orders[1].Price customer# > > '{Orders,0,Price}'[1]

jsonb array

length(customer->'Orders') customer.Orders.Length (or Count)

EF.Functions.JsonContains(customer, @"{""Name"": ""Joe"",

EF.Functions.JsonExists(e.Customer, "Age") customer ? 'Age'

EF.Functions.JsonExistsAny(e.Customer, "Age", "Address") customer ?| ARRAY['Age','Address ]

EF.Functions.JsonExistsAll(e.Customer, "Age", "Address") customer ?& ARRAY[ Age','Address']

EF.Functions.JsonTypeof(e.Customer.Age) jsonb typeof(customer->'Age')

18

Trang 35

- Con với kiểu dit liệu ‘ts vector” và tìm kiếm toàn văn trên PostgreSQL thì

Entity framework có hỗ các hàm tương ứng sau: [6]

EF.Functions.PlainToTsQuery("english", string) plainto_tsquery(‘english'::regconfig, string)

tsvector.Matches(string) tsvector @@ plainto_tsquery(string)

tsvector.Matches(tsquery) tsvector tsquer

tsvector.Rank(tsquery) ts_rank(tsvector, tsquery)

tsvector.ToStripped() strip(tsvector)

19

Trang 36

Chương 2 Thiết kế hệ thống

2.1.Sơ đồ Usecase

- _ Các usecase chính cua ứng dụng

Quản lý phiên đảng nhập quản trị

Quản lý các bải đăng

Người dùng

quản trị

Quản lý nội dung

Quản lý các quyền,

vai trò

Quản lý thông tin

của bản thân

Tim kiếm các nội dung

công khai Đăng ky tải khoản

Quản lý bải đăng của

Xem các nội dung

Quản lý thông tin az B

Trang 37

Tim kiếm bài viết theo

Tim kiếm các nội Gung \ -xteng»› { Tim kiếm bai viétcông khai

Đăng ky tải khoản

Xem chỉ tiết về danh

<s<extend=>:-{ tương tac đã thực hiện

(luu, thích, bai viet)

Chuyén trang thái Tương tac với

Tải lên hình ảnh Tạo bải viết mới Xóa bãi viết

bai viet thé, danh mục, người dùng,

bai viết

Sửa, đất lai mật khâu Tương tác với các

nôi dung công khai

Xác minh tải khoản ssextend>= ° 9

f ev sain ‘Quan lý bình luận của Quân lý phiên ề Báo cáo binh luận

k Xóa tải khoản h " À ^

<<extend>> `: bản thân đăng nhập 235026 không phù hợp

Gửi yêu cầu xác minh = # i e htải khoản <<extend=> <exfend>> <<exfend>> <<extend>> <<extend>>

Truy van các phiênrần các | Báo cáo người dùng

đăng nhập

Xóa bình luận Chỉnh sửa bình luận Viết bình luận ce ự

không phù hợp.

Xóa phiên đăng nhập

Hình 2.1.3: Chi tiết usecase của người dùng

21

Trang 38

Từ chối bai viết có

nội dung thay doi

- Chi tiêt usecase của người dùng quan tri

“Xác nhân bai viết đang.

Từ chối bai viết

Truy van các bai viết

không phải bai viết

riêng tư

Quản lý hình ảnh, các dữ liêu công khai

<<erdend=>

Tải lại cầu hình.

<<include>>

Tao mới, sửa, vô hiệu.

mê Quản lý danh mục.

Tạo mới, sửa, vô hiệu Quan lý phiên

danh mục đăng nhập quản trị

Thêm, xóa vai trò của.

Truy van người dùng người dùng

Quản lý thông tin của bản thân

Quản lý các quyền,

vai trồ

<<etend>>

Tạo mới, sửa, xóa

quyền, vai trò của

Xóa phiên đăng nhập

Truy van các phiên

đăng nhập

Chỉnh sửa thông tin

cá nhân

Sửa, đặt lại mật khẩu

Tạo mới, sửa, xóa

quyền, vai trò của

người dùng thường

"Thêm, xôa vai trò của người dùng

Khóa, mở khoá người dùng

22

Trang 39

table character varying(50)

table_key character varying(100)

action character varying(50)

table character varying(50)

table_key character varying(100)

action character varying(50)

status character varying(15)

right_name character varying(50)

display_name character varying(50) describe character varying(150)

status character varying(15)

uuid integer

jsonb

integer 1

character varying(50) character varying(50)

character varying(150) character varying(15)

boolean

dbdiagrar

Hình 3.1.1: Mô hình cơ sở dữ liệu của người dùng quản trị

23

Trang 40

- _ Các bảng và quan hệ vê người dùng:

social user action with category

1 ia bigint

-Ha by parent_id bigint

sctons = name character varying(20)

display_name character varying(50) describe character varying(300)

user_id uuid — thumbnail text

post_id bigint 1 ia status character varying(15)

actions jsonb owner uid search_vector tsvector

title text created_timestamp timestamp

slug text last_modified_timestamp timestamp thumbnail text

character varying(25) content_search text

character varying(50) content text

character varying(50) pending_content jsonb character varying(32) short_content text

character varying(8) content_type character varying(15) character varying(320) search_vector tsvector

character varying(2048) created timestamp timestamp

sex character varying(10) approved_timestamp timestamp

phone character varying(20) last_modified_timestamp timestamp

country character varying(20)

character varying(20) character varying(20)

id bigint 1

parent_id bigint

last_access_timestamp timestamp created_timestamp timestamp

last_modified timestamp timestamp

Hình 3.1.2: Mô hình cơ sở dữ liệu của người dùng thường, bài viết, danh mục, thẻ,

bình luận

24

Ngày đăng: 03/11/2024, 18:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w