2011-12-27 21 views
6

Bất cứ ai cũng biết cách lập chỉ mục không gian địa lý hoạt động, tôi có nghĩa là thuật toán để tính điểm gần nhất?bên trong cơ chế lập chỉ mục địa không gian trong mongodb

Trong SQL mà chúng ta có thể làm những việc như thế này:
SELECT id, (x-a)*(x-a)+(y-b)*(y-b) as distance FROM table1 ORDER by distance ASC
Chắc chắn điều này là không đủ so với chỉ mục không gian địa lý MongoDB của hiệu quả, nhưng như thế nào MongoDB tính toán và sắp xếp?

Rất cám ơn trước.

Trả lời

4

Trái tim của mongodb không gian địa lý là Geohashes. Geohash là

Cấu trúc dữ liệu không gian theo thứ bậc chia nhỏ không gian thành các hình dạng lưới.

Tôi không thể tìm thấy các liên kết thích hợp cho việc triển khai geohash ở mongo, nhưng điều này thread có thể cung cấp một số thông tin chi tiết.

+1

Cảm ơn bạn! Điều này giúp ích rất nhiều. Không bao giờ nghe nói về Geohashes, có vẻ như tôi cần google và nghiên cứu kỹ vào đầu tiên ~~ – adamsmith

2

từ 10gen site:

Việc thực hiện mã hóa mã băm địa lý trên đỉnh chuẩn MongoDB B-cây. Kết quả của các truy vấn gần $ là chính xác. Một giới hạn với mã hóa này, trong khi nhanh chóng, là tra cứu tiền tố không cung cấp cho kết quả chính xác, đặc biệt là xung quanh các khu vực lật bit. MongoDB giải quyết điều này bằng cách thực hiện tìm kiếm theo hàng xóm lưới sau khi quét tiền tố ban đầu để chọn lên bất kỳ điểm nào của straggler. Điều này thường đảm bảo rằng hiệu suất vẫn còn rất cao trong khi cung cấp kết quả chính xác.

+0

Cũng có những nhận xét về các chi tiết cụ thể của việc triển khai trong mã nguồn C++, là mã nguồn mở và có sẵn để tải xuống (tôi có mã nguồn trên máy tính khác nhưng tôi nghĩ đó là một cây z-order-b ... từ sự hiểu biết của tôi kết quả cuối cùng về cơ bản là một thuật toán bốn phím) – Jordan

Các vấn đề liên quan