Phương pháp tìm kiếm này sẽ sử dụng các cặp thuộc tính – giá trị để tìm kiếm thông tin. Các từ khoá mà người dùng hay sử dụng chủ yếu là các cặp thuộc tính – giá trị ví dụ như “Trường = Đại Học Công Nghệ” là một cặp thuộc tính – giá trị, thuộc tính là “Trường” và giá trị là “Đại Học Công Nghệ”. Theo thống kê thì một từ khoá tìm kiếm mà người dùng sử dụng trung bình gồm có 2.53 từ và có tới 71.5% các truy vấn tìm kiếm bao gồm hai hoặc nhiều hơn các từ khoá . Do từ khoá tìm kiếm thường là cặp thuộc tính – giá trị nên tìm kiếm theo phương pháp này có thể tìm được hầu hết các thông tin mà người dùng mong muốn.
Trong phương pháp này nội dung thông tin sẽ được biểu diễn thành một tập các cặp thuộc tính – giá trị. Việc tìm kiếm thông tin cũng sẽ dựa trên các cặp cặp thuộc tính – giá trị, trong yêu cầu tìm kiếm sẽ có chứa một tập các cặp thuộc tính – giá trị
cần truy vấn. Kết quả trả về sẽ chứa danh sách các bản ghi có các cặp thuộc tính – giá trị thoả mãn truy vấn.
23
Việc phân bổ thông tin có thể dựa vào một trong số các cặp thuộc tính để phân bổ
hoặc với một thông tin có n cặp thuộc tính – giá trị có thể sẽ phải phân bổ thông tin này ra n nút để khi tìm kiếm có thể tìm được thông tin đã phân bổ này.
Một số giải thuật tìm kiếm theo giá trị - thuộc tính tiêu biểu như: CDS [4] (Content discovery System), INS/Twine [5]
2.3.3. Tìm kiếm theo khoảng
Là phương pháp tìm kiếm mà giá trị của một thuộc tính dao động trong một khoảng nào đó. Ví dụ như tìm kiếm một thuộc tính “Quần Áo” có giá trị từ “100.000
đến 300.000 đồng” hoặc tìm kiếm trong một vùng địa lý, một khoảng thời gian.
Người dùng khi tìm kiếm thông tin thường không biết chính xác thông tin hoặc chỉ biết một phần thông tin hoặc muốn tìm thông tin trong một giới hạn nào đó. Để có thể cung cấp thông tin cho người dùng dù người dùng chỉ biết một phần thông tin hoặc muốn tìm thông tin trong một giới hạn thì phương pháp tìm kiếm theo khoảng được sử
dụng.
Tìm kiếm theo khoảng trên các hệ thống tập trung rất đơn giản chỉ cần duyệt tất cả các bản ghi theo chỉ mục để lấy ra các bản ghi thoả mãn thuộc tính có giá trị theo khoảng yêu cầu. Tuy nhiên để tìm kiếm theo khoảng trên mạng ngang hàng có cấu trúc là khó vì mạng ngang hàng có cấu trúc chỉ hỗ trợ tìm kiếm chính xác. Tức là chỉ có những thông tin như “Giá = 100.000 đồng” thì mới có thể tìm được trên mạng ngang hàng có cấu trúc mà không thể tìm được các thông tin như “Giá < 100.000 đồng và Giá > 10.000 đồng”.
Để có thể tìm kiếm theo khoảng trên mạng ngang hàng có cấu trúc thì chúng ta có một số ý tưởng để thực hiện việc đó:
- Ý tưởng để có thể tìm kiếm theo khoảng trên mạng ngang hàng có cấu trúc đó là dùng một phép biến đổi từ tìm kiếm theo khoảng thành tìm kiếm chính xác. Phép chuyển đổi này có thể được thực hiện bằng cách biểu diễn thông tin sao cho dữ liệu trong một khoảng nào đó được chuyển thành dữ liệu tại một điểm hoặc với những dữ
liệu gần giống nhau thì được chèn vào mạng ngang hàng tại các vị trí gần nhau về mặt tô pô của mạng (như các dữ liệu gần giống nhau có thể lưu ở hai nút là hàng xóm của nhau).
- Ta có thể coi một khoảng là một giá trị nào đó khi chèn thông tin vào mạng ngang hàng có cấu trúc như “Bất kỳ giá cả của mặt hàng nào có giá từ 100.000 đồng
24
= 100.000 đồng” để lấy định danh và chèn vào mạng ngang hàng có cấu trúc, trong bản ghi được chèn thì vẫn có chứa thông tin về giá cả thực của mặt hàng. Khi tìm kiếm một mặt hàng từ khoảng 120.000 đến 180.000 đồng thì ta chỉ việc băm chuỗi “Giá = 100.000 đồng” để lấy định danh và tìm xem nút nào quản lý định danh này. Khi đã biết
được nút nào quản lý định danh này thì ta sẽ truy vấn đến đó và tìm kiếm, nút chứa
định danh khi nhận yêu cầu tìm kiếm sẽ duyệt trong cơ sở dữ liệu (lúc này việc tìm kiếm là cục bộ nên có thể dễ dàng lọc thông tin theo khoảng) để tìm các bản ghi thoả
mãn và trả về cho máy yêu cầu.
Nếu dữ liệu gần tường đồng nhau mà được chèn một vùng gần nhau về mặt tô pô của mạng ngang hàng có cấu trúc thì các truy vấn tìm kiếm theo khoảng có thể truy vấn quanh vùng đó để lấy được thông tin cần tìm.
2.4. Kết luận
Trong chương này chúng ta đã giới thiệu tổng quan về mạng ngang hàng, các ưu nhược điểm của mạng ngang hàng và phân loại mạng ngang hàng.
Mang ngang hàng được chia thành hai loại là mạng ngang hàng lai ghép và mạng ngang hàng thuần tuý.
Đại diện cho mô hình mạng ngang hàng lai ghép là mạng ngang hàng Napster,
đặc điểm của mô hình mạng này là có một máy chủ trung tâm quản lý chỉ mục và đây cũng chính là nhược điểm của mô hình này. Khi máy chủ trung tâm bị lỗi thì mạng ngang hàng lai ghép sẽ không thể tìm kiếm được thông tin do không thể truy cập đến thông tin chỉ mục do máy chủ quản lý.
Mạng ngang hàng thuần tuý được chia thành hai loại là mạng ngang hàng có cấu trúc và mạng ngang hàng không có cấu trúc. Mạng ngang hàng Gnutella là đại diện cho mạng ngang hàng không có cấu trúc và nhược điểm của mô hình mạng này là không đảm bảo chắc chắn tìm kiếm được dữ liệu có tồn tại trên mạng do sử dụng cơ
chế tìm kiếm phát tràn thông điệp. Do mạng ngang hàng không có cấu trúc sử dụng cơ
chế tìm kiếm phát tràn nên làm tốn băng thông mạng đồng thời giảm hiệu quả tìm kiếm.
Mạng ngang hàng có cấu trúc đã khắc phục được những nhược điểm của mạng ngang hàng không có cấu trúc. Các nút trong mạng ngang hàng có cấu trúc được liên kết với nhau theo một quy luật, mỗi nút sẽ quản lý một phần dữ liệu chia sẻ trên mạng và các dữ liệu chia sẻ này sẽ có mối liên hệ với nút quản lý. Ở trong mô hình mạng
25
ngang hàng có cấu trúc thì ta tìm hiểu chi tiết cách thức hoạt động của mạng ngang hàng Chord.
Trong chương này chúng ta cũng đã được giới thiệu về các phương pháp tìm kiếm trong mạng ngang hàng có cấu trúc là tìm kiếm chính xác, tìm kiếm theo thuộc tính – giá trị và tìm kiếm theo khoảng.
Qua tìm hiểu về lịch sử phát triển của mạng ngang hàng, ưu nhược điểm của mạng ngang hàng thì ta thấy mạng ngang hàng là một công nghệ mạnh và sẽ phát triển trong tương lai. Việc triển khai các ứng dụng trên mạng ngang hàng sẽ có thể tận dụng
được rất nhiều ưu điểm của mạng này như tận dưng được khả năng xử lý, lưu trữ, băng thông của mạng và hệ thống có khả năng mở rộng cao.
26
CHƯƠNG 3. XÂY DỰNG DỊCH VỤ TÌM KIẾM THÔNG TIN THEO VỊ TRÍ DỰA TRÊN MẠNG NGANG HÀNG CÓ CẤU TRÚC
3.1. Mục đích và yêu cầu của tìm kiếm thông tin dựa vào vị trí
Để đáp ứng được nhu cầu tìm kiếm thông tin chính xác và phù hợp với yêu cầu của người dùng thì khoá luận đã xây dựng một hệ thống tìm kiếm thông tin theo vị trí trong đó thông tin tìm kiếm được dựa trên ngữ cảnh của người dùng. Hệ thống tìm kiếm này sẽ tựđộng cung cấp thông tin cho người dùng bằng cách tạo ra truy vấn tìm kiếm một cách tựđộng từ ngữ cảnh của người dùng.
Ví dụ như một người dùng đang làm việc ở cơ quan và 11 giờ là hết giờ làm việc thì hệ thống sẽ tựđộng cung cấp thông tin về các tiệm ăn quanh vị trí cơ quan. Thông tin về các tiệm ăn có thểđược lọc theo sở thích của người dùng như người dùng thích
ăn đồăn nhanh hay thích ăn cơm công sở.
Yêu cầu của dịch vụ tìm kiếm thông tin theo vị trí được chia thành hai loại là yêu cầu của người dùng và yêu cầu của hệ thống:
+ Yêu cầu của người dùng:
- Hệ thống có thể cung cấp thông tin mọi lúc, mọi nơi, ở bất cứ mạng nào và với bất kỳ thiết bị di động cầm tay nào.
- Sử dụng dễ dàng.
- Có thể cung cấp được thông tin, thông tin cung cấp chính xác, phù hợp với ngữ
cảnh và yêu cầu của người dùng.
- Thời gian đáp ứng của dịch vụ là nhanh
- Một số yêu cầu phụ như hệ thống có giao diện đẹp, hoạt động ổn định, tốn ít khả năng xử lý và lưu trữ của thiết bị.
+ Yêu cầu của hệ thống:
- Cung cấp thông tin đúng, chính xác.
- Có thể quản lý, lưu trữ và tìm kiếm thông tin trên quy mô lớn.
- Có thể cung cấp dịch vụ cho số lượng lớn người dùng tại một thời điểm.
- Hệ thống có thể dễ dàng mở rộng như nâng cấp hệ thống, tăng số lượng các máy phục vụ.
27
3.2. Giải pháp thực hiện
Triển khai dịch vụ tìm kiếm theo vị trí trên mạng mạng ngang hàng có cấu trúc vì mang hàng hàng có cấu trúc có ưu điểm là có thể quản lý, lưu trữ và tìm kiếm dữ liệu trên quy mô lớn và dễ dàng mở rộng.
Để có thể tìm kiếm thông tin chính xác phù hợp với yêu cầu của người dùng thì hệ thống tựđộng tạo truy vấn tìm kiếm dựa trên ngữ cảnh người dùng.
Dịch vụ tìm kiếm thông tin theo vị trí có đặc điểm là tìm kiếm theo khoảng chính vì vậy hệ thống phải có khả năng tìm kiếm theo khoảng. Để hệ thống có thể tìm kiếm theo khoảng thì dữ liệu theo vị trí phải được biểu diễn và chèn vào mạng ngang hàng có cấu trúc một cách phù hợp.
3.2.1. Tạo câu truy vấn phù hợp với ngữ cảnh
Để tạo ra câu truy vấn phù hợp với ngữ cảnh của người dùng thì hệ thống dựa vào các thông tin cá nhân của người dùng (tuổi, giới tính, lịch làm việc, sở thích...), các thông tin môi trường xung quanh (thời tiết, khí hậu, thời gian, mùa...) và thông tin vị trí.
Ví dụ như một người dùng có lịch làm việc khoảng 8 giờ thì lúc 7 giờ có thể truy vấn tìm kiếm một số quán ăn gần vị trí người dùng, câu truy vấn còn yêu cầu lọc theo sở thích của người dùng như người dùng có thể chỉ thích ăn mì hoặc phở thì kết quả trả
về sẽ là các quán ăn bán mì hoặc phở.
3.2.2. Biểu diễn dữ liệu theo vị trí
Cách thức chèn dữ liệu vào mạng ngang hàng có cấu trúc Chord sẽ ảnh hưởng
đến cách thức tìm kiếm dữ liệu. Đặc trưng của dịch vụ tìm kiếm theo vị trí là tìm kiếm theo khoảng (trong một vùng bán kính) chính vì vậy cách thức chèn dữ liệu vào mạng Chord phải đảm bảo sao cho khi tìm kiếm có thể tìm kiếm được thông tin theo khoảng.
Để có thể hỗ trợ tìm kiếm thông tin trong một vùng địa lý thì ta chia bề mặt trái
đất ra thành các ô hình vuông có cạnh là một ki lô mét và tất cả các vị trí thuộc một hình vuông sẽđược quy thành một điểm chung.
28
Hình 15. Minh hoạ chia bề mặt trái đất thành các ô
Giả sử như hình vẽ trên ta chia bề mặt vật lý của một khi vực thành 25 hình vuông và mỗi hình vuông sẽ có cạnh là một ki lô mét.
Hình 16. Minh hoạ một ô của bề mặt trái đất được chia ra
Giả sử một ô là hình vuông ABCD như hình vẽ trên và điểm E có toạđộ (2500, 1500) nằm trong hình vuông này. Khi đó điểm E sẽđược quy về coi như là điểm C có toạ độ là (2000, 1000). Như vậy tất cả các toạ độ thuộc hình vuông sẽ đều được coi như là điểm C có toạđộ (2000, 1000). Khi đó tất cả các thông tin có toạđộ trong hình
29
vuông sẽ có chung một định danh để chèn vào mạng Chord (định danh trong chương trình sẽ được tính bằng cách băm chuỗi “2000$1000” đây là chuỗi được tạo ra từ toạ độ của điểm C). Khi tìm kiếm thì ta sẽ đi ngược lại với quá trình chèn dữ liệu, giả sử
như ta tìm thông tin của một vùng nào đó trong hình vuông ABCD thì ta sẽ chỉ việc truy vấn đến nút nào quản lý định danh được băm từ toạđộ của điểm C để hỏi thông tin mà ta cần tìm.
3.2.3. Chèn dữ liệu vào mạng ngang hàng có cấu trúc
Sau khi đã biểu diễn được dữ liệu theo vị trí thì ta sẽ tiến hành chèn dữ liệu theo vị trí này vào mạng ngang hàng có cấu trúc có cấu trúc (cụ thể trong khoá luận này là mạng ngang hàng có cấu trúc Chord).
Dữ liệu vị trí sẽ được biểu diễn dưới dạng ngôn ngữ XML (eXtensible Markup Language) để tiện cho việc lưu trữ, truy vấn, tìm kiếm cũng như khả năng mở rộng hệ
thống sau này.
Khi cần chèn một thông tin ở vị trí kinh độ là A và vĩ độ là B thì các bước thực hiện sẽ như sau:
Bước 1: Chuyển đổi kinh độ A và vĩđộ B sang hệ mét C = A * 3600 * 30.82 (m)
D = B * 3600 * 30.92 (m)
Trong công thức trên thì toạđộ A và B đều ở dạng thập phân và một độ kinh độ
hoặc vĩ độ bằng 3600 giây, một giây kinh độ sẽ có độ dài là 30.82 mét và một giây vĩ độ có độ dài là 30.92.
Bước 2: Toạđộ C và D sẽđược quy về một toạđộ chung nhưđã trình bày ở mục 3.2.2 về cách biểu diễn dữ liệu theo vị trí.
Giả sử toạđộ C và D được chuyển sang toạđộ chung là E và F thì E và F sẽđược tính như sau:
E = C - C % 1000 F = D – D % 1000
Bước 3: Tính toán định danh và chèn dữ liệu vào mạng ngang hàng có cấu trúc: - Tính định danh ID bằng cách băm chuỗi “E + $ + F”
30
- Dữ liệu chèn sẽ được lưu tại nút có nhiệm vụ quản lý định danh ID và dữ liệu chèn này sẽđược lưu thông tin đây đủ (bao gồm cả toạđộ kinh độ và vĩ độ thực tế mà không phải là kinh độ và vĩđộđã chuyển đổi).
3.2.4. Tìm kiếm dữ liệu
Giả sử như ta cần tìm thông tin ở quanh vị trí có kinh độ là A và vĩ độ là B với bán kính vùng tìm kiếm là 2 km thì các bước thực hiện sẽ như sau:
Bước 1: Kinh độ A và vĩđộ B sẽđược chuyển đổi sang hệ mét C = A * 3600 * 30.82 m
D = B * 3600 * 30.92 m
Trong công thức trên thì toạđộ A và B đều ở dạng thập phân và một độ kinh độ
hoặc vĩ độ bằng 3600 giây, một giây kinh độ sẽ có độ dài là 30.82 mét và một giây vĩ độ có độ dài là 30.92.
Bước 2: Trong bước này ta sẽ tính xem truy vấn đến các nút quản lý các ô nào.
Hình 17: Minh hoạ tìm kiếm thông tin trong một vùng
Giả sử ta đang tìm kiếm thông tin trong một vùng hình tròn ở một khu vực được chia thành 25 ô như hình trên. Do việc tìm kiếm thông tin trong một vùng hình tròn khó hơn tìm trong một vùng hình vuông nên ta chuyển sang tìm kiếm trong một vùng
31
hình vuông bao quanh hình tròn. Giả sử hình vuông bao quanh hình tròn là ABCD và