Chương 1. Giới thiệu bài toán và các các công nghệ 2) Do tất cả Node đều lưu đữ liệu, nên Master Node sẽ chọn ra 1 Node va lay dt liệu ở Shard số 0 (P0 hoặc R0). Việc chon này giúp giảm tap trung vào một node. Thuật toán Round-Robin được sử dụng để các Shard được chọn khác nhau ở mỗi request.
Trong trường hợp này Node 2 được chọn. 3) Replica Shard 0 ở Node 2 trả về kết quả cho Master Node. Elastic thực hiện các công việc sau cho công đoạn truy vấn tìm kiếm đữ liệu [3]: 1) Node nhận request sẽ gửi broadcast request đó đến tat cả các Node khác. Tại mỗi Node này sẽ chỉ định một Shard thực hiện công việc tìm kiếm theo yêu cầu.
2) Mỗi Shard sẽ thực hiện công việc tìm kiếm, trả về _id Về _score cua Document. Trong đó, _id là định danh duy nhất của Document, _ score là giá trị dùng dé sắp xếp Document theo thứ tự của độ liên quan với thông tin cần tìm kiếm. 3) Node tiếp nhận request sau khi nhận kết quả trả về từ các Node khác sẽ thực hiện công việc sắp xếp toàn cục tất cả các Document được trả về, dựa theo _id và _score để đảm bảo tính đúng đắn của dit liệu. Cuối cùng Node tiếp nhận request sẽ trả ra kết quả sau khi sắp xếp về phía client.
Ly do lựa chọn Elasticsearch MySQL có hỗ trợ cơ chế full-text search, tuy nhiên full-text search với MySQL có nhiều hạn chế về mặt hiệu năng, cũng như khó mở rộng theo chiều ngang. Elasticsearch cho kết quả tìm kiếm chất lượng với hiệu năng vượt trội hơn. Đồng thời dé dang mở rộng, nâng cấp nếu kích thước dit liệu tăng lên. Thuật toán TF/IDF Thuật toán đánh giá được sử dụng rất phố biến trong Elasticsearch có tên gọi là TF/IDF, viết tắt của Term Frequency/Inverse Document Frequency, bao gồm các yếu tô đánh giá: Term frequency, Inverse document frequency, Field-length norm.
Term frequency Yéu tô này được sử dung dé đánh giá tan suât xuât hiện cua term trong field. Càng xuât hiện nhiêu, relevance càng cao. Term frequency được tính bởi công thức: tft, d) = //frequency Giải thích: term frequency tf của term t trong document d sẽ được tinh bằng căn bậc hai của tần suất xuất hiện của t trong d. 19 Đồ án tốt nghiệp Chương 1.
Giới thiệu bài toán và các các công nghệ 1. Inverse document frequency Yếu tố này đánh giá tan suất xuất hiện của term trên toàn bộ index. Nếu term xuất hiện càng nhiều thì sẽ càng ít thích hợp. Ví dụ với các từ không mang ý nghĩa riêng biệt như “sinh viên”, khi tìm kiếm sẽ có ít giá trị hơn so với “sinh viên học viện Công nghệ Bưu chính viễn thông”.
Công thức tính: numDocs 1df)=1+ln docFreq+1 Giải thích: Inverse document frequency idf của term t sẽ bằng 1 cộng với logarit tự nhiên của thương giữa tổng số document trong index và số document xuất hiện t cộng thêm 1 (tránh việc t không xuất hiện trong document nao gây ra phép chia cho 0). Field-length norm Yếu tô này đánh giá độ dài của field chứa term. Với field càng ngăn, việc xuất hiện của term trong đó sẽ có giá trị càng cao. Điển hình như việc xuất hiện term ở tiêu đề sẽ có giá trị hơn hắn khi xuất hiện trong nội dung bài viết.
Công thức tính: 1 norm(d) = vnumFieldTerms Giải thích: Field-length norm (norm) của document d là nghịch đảo căn bậc 2 của số lượng của term trong field. Tổng hợp lai, ta có công thức tính _ score như sau: _ score = IDF score * TF score * fieldNorms numbDocs 1 = (1 + In——__) * |/frequency * đocFreq+1 vnumFieldTerms Elasticsearch sẽ sử dụng _ score dé xác định thứ tự liên quan của các kết quả trả về khi thực hiện full-text search, mặc định kết quả trả về sẽ được sắp xếp theo thứ tự _score cao nhất đến thấp nhất, từ đó trả về kết quả từ liên quan nhất đến không liên quan nhất tới từ khóa tìm kiếm. Các thư viện va framework lập trình được lựa chon 1. LeafletJS Leaflet là một thư viện JavaScript mã nguồn mở cho việc xây dựng một ứng dụng bản đồ có tính tương tác.
Đây là một thư viện khá nhẹ, chỉ khoảng 38KB cho phan script nhưng lại có đầy đủ tất cả các tính năng mà hầu hết các lập trình viên cần. 20 Đồ án tốt nghiệp Chương |. Giới thiệu bai toán và các các công nghệ Leaflet được thiết kế chú trọng tới sự đơn giản, hiệu suất, và khả năng sử dụng. Nó cũng hoạt động hiệu quả trên cả nền tảng máy tính lẫn điện thoại, có thể được mở rộng với rất nhiều các plugin.
L+ PIN oS Vee <1. > + J1 0DMGBURY/ 005CLERKENWEI ERRENOMEELL ` % ai, : el | a" G ¿ , ro| BH HOLBORN «` | am a standalone popup. Ầ iy ra mĩ: an SA CũVEI COVENT GARDEN EAMBETH stminster Ỉ ae h i. eal SQUURARYESY | ie “a.
BE RM DN SOUTH DS EY ä = d Leaflel | Map data.&—OpenStreetMaptontributors, Imagery & Mapbox bê Hình 1. Giao diện ví dụ về thư viện LeafletJS [6] Lý do lựa chọn LeafletJS: Đối với API cho bản đồ thì Google Maps luôn đi đầu, nhưng giá thành cần phải trả rất tốn kém. Leaflet là một thư viện mã nguồn mở, không tốn kém chi phí, nhưng cũng cung cap khá đầy đủ các tính năng cần thiết cho phát triển ứng dụng. Do đó trong khuôn khổ đồ án nay, em lựa chọn LeafletJS cho việc hiển thị vị trí trên bản đồ.
Ruby On Rails Ruby on Rails là một web framework được viết dựa trên ngôn ngữ lập trình Ruby. Do vậy, trước khi đi vào tìm hiểu Rails framework thì em sẽ trình bày đôi nét về ngôn ngữ lập trình Ruby. 21 Đồ án tốt nghiệp Chương 1. Giới thiệu bài toán và các các công nghệ a.
Ngôn ngữ lập trình Ruby Ruby được tạo ra bởi Yukihiro "Matz" Matsumoto từ 24 thang 2, 1993 và đưa ra bản chính thức vào năm 1995, và hiện tại vẫn đang được tiếp tục phát triển. Ké từ sau khi ngôn ngữ Ruby được công khai, những hiệu quả phát triển mà nó mang lại ngày càng được biết đến rộng rãi, và hiện tại nó đã trở thành 1 ngôn ngữ nỗi tiếng trên khắp thế giới. Ruby là ngôn ngữ hướng đối tượng hoàn toản, với mọi thứ đều là một đối tượng. Điểm mạnh của Ruby: - __ Tất cả những mặt mạnh của ngôn ngữ hướng đối tượng, Ruby đều kế thừa hoàn toàn, bao gồm cả sự linh động của chính ngôn ngữ.
Ta có thé viết thêm những method khác vào Ruby mà không hề ảnh hưởng tới những method đã có. - Dé dang đọc hiểu, do có cú pháp ngắn gon, súc tích. Lập trình viên khi lập trình với Ruby sẽ có cảm giác cú pháp của nó rất “thanh thoát”. Điểm yêu của Ruby: Điểm yếu lớn nhất của Ruby là tốc độ, so sánh với Java thì Ruby chậm hơn rất nhiều.
Ruby on Rails framework Được phát triển dựa trên ngôn ngữ Ruby dé phục vu cho việc xây dung ứng dụng web, Rails là một framework nồi tiếng về sự tiện ích với thế mạnh về cú pháp của Ruby, cùng với đó là rất nhiều những thư viện có sẵn mạnh mẽ giúp cho lập trình viên tập trung vào phát triển ứng dụng hơn là phải xử lý từ những thứ nhỏ nhất. Không chỉ là những thư viện có sẵn, cộng đồng sử dụng Ruby on Rails rất lớn và do đó có rất nhiều những thư viện tiện lợi cho Rails. Ruby on Rails đưa ra những quy ước dé lập trình viên tuân theo, từ đó framework sẽ có các cơ chế để giúp cho việc lập trình của lập trình viên trở nên tiện lợi hơn, ví dụ như tự động sinh ra những file cần thiết, tự động tìm kiếm và import các file. Rails được xây dựng dựa trên mô hình nổi tiếng MVC, tuy nhiên với những cập nhật gần đây nó cũng có những hỗ trợ dé phát triển một ứng dụng Restful API chứ không chỉ là MVC.
Vì những lý do trên, có rất nhiều những ô ông lớn trong ngành công nghệ đã và đang sử dung Ruby on Rails làm công cụ phát triển, ví dụ một số cái tên nổi bật như: Twitter (hiện đã chuyền đổi qua Scala), Github, Airbnb, Soundcloud. 22 Đồ án tốt nghiệp Chương |. Giới thiệu bai toán và các các công nghệ ©» STORLET 3 Basecamp CAR RENTAL Hình 1. Các công ty xây dựng trên nền tang Ruby on Rails [7] c.
Lý do lựa chon Ruby on Rails: Đồ an nay sử dung Ruby on Rails dé phát triển phía server vì những tiện dụng của nó như cú pháp ngắn gọn, dễ đọc của ngôn ngữ Ruby, sự mạnh mẽ đến từ các thư viện có sẵn và bên ngoài cua Rails framework, dé dang tích hợp với các dịch vụ bên thứ ba do tính phố biến của framework. MySQL MySQL là hệ quan tri cơ sở dt liệu quan hệ mã nguồn mở, hoạt động theo mô hình client-server. Công ty Thuy Điển MySQL AB phát trién MySQL vào năm 1994. Công ty công nghệ Mỹ Sun Microsystem sau đó giữ quyền sở hữu MySQL sau khi mua lại MySQL vào năm 2008.
Năm 2010, gã khổng 16 Oracle mua Sun Microsystems và MySQL thuộc quyền sở hữu của Oracle từ đó. MySQL tương thích với nhiều hệ điều hành máy tính phổ biến như Linux, macOS và Microsoft Windows. Hiện nay có rất nhiều ông lớn trong ngành công nghệ sử dụng MySQL như Facebook, Youtube. và MySQL cũng được giảng dạy rộng rãi ở các trường đại học trong nước và quốc tế.
Các đặc điểm giúp cho MySQL trở nên nồi tiếng và được ứng dụng rộng rãi [7]: e MySQL được phát hành theo giấy phép nguồn mở. Nó hoàn toàn miễn phí e MySQL sử dụng một dạng chuẩn của ngôn ngữ truy van dữ liệu SQL nổi tiêng 23 Đồ án tốt nghiệp Chương 1. Giới thiệu bài toán và các các công nghệ e MySQL tương thích với nhiều hệ điều hành và nhiều ngôn ngữ lập trình khác nhau bao gồm Ruby, C, C ++, Java, PHP. e MySQL hoạt động rất nhanh và hoạt động tốt ngay cả với các tập dit liệu lớn e MySQL rất thân thiện với PHP, một ngôn ngữ phổ biến trên toàn thế giới trong nhiều năm qua e = MySQL hỗ trợ co sở dit liệu lớn, lên tới 50 triệu hàng hoặc nhiều hơn trong một bảng.
Giới hạn kích thước tệp mặc định cho một bảng là 4GB, nhưng ta có thé điều chỉnh giới hạn này theo lý thuyết lên đến 8 triệu TB Lý do lựa chọn MySQL Đồ án sử dụng MySQL để lưu trữ dữ liệu vì những nó là mã nguồn mở, đồng thời với tính phố biến rộng rãi, dé sử dụng và tương thích với nhiều nền tảng, ngôn ngữ khác nhau của nó.