2012-05-15 19 views
6

Có chỉ báo trong số GoogleIO talk on Search API mà chúng tôi có thể thực hiện tìm kiếm dựa trên vị trí địa lý.Làm cách nào để lưu trữ điểm định vị lat-lon trong tài liệu cho tìm kiếm GAE?

Tôi không thể tìm thấy appropriate field để lưu trữ thông tin vị trí.

Làm cách nào để lưu trữ thông tin vị trí địa lý trong document để tôi có thể đưa ra các truy vấn dựa trên khoảng cách từ một vị trí GPS cụ thể?

+0

tôi không tin rằng có ag ood câu trả lời cho điều này. Hiện tại, API tìm kiếm đang ở trạng thái Thử nghiệm. Tôi đã tìm kiếm thông qua tài liệu và mã mẫu (http://goo.gl/Yb7n1). Không có nhiều thông tin có sẵn để giải quyết chức năng này, hoặc cho phép bạn xây dựng một cơ chế tốt để giải quyết vấn đề này. Tôi khuyên bạn nên xem trang theo dõi vấn đề của API tìm kiếm (http://goo.gl/LczvP). Ai đó đã yêu cầu chức năng này và nó hiện đang xếp thứ 3 (http://goo.gl/SIDqA) trong danh sách các vấn đề. – RLH

+0

Tôi nghĩ bản thân mình, nhưng tôi không chắc chắn. Cuộc nói chuyện của Google IO có phần gây hiểu lầm có [đề cập đến GeoPoint] (http://youtu.be/7B7FyU9wW8Y?t=12m30s) nhưng không có trường như vậy. Tôi không biết nó chưa được phát hành hay việc triển khai API đã thay đổi. –

Trả lời

7

Vào ngày 28 tháng 6 năm 2012, Google tích hợp GeoPoint class vào thư viện API tìm kiếm của Google App Engine với mục đích cụ thể là làm cho các điểm không gian có thể tìm kiếm được.

GeoPoints được lưu trữ dưới dạng GeoFields trong Tài liệu tìm kiếm. Google cung cấp this support documentation nêu rõ việc sử dụng GeoPoint với API tìm kiếm.

Ví dụ sau đây tuyên bố GeoPoint và gán nó cho GeoField trong Tài liệu tìm kiếm. Những lớp học mới cung cấp nhiều chức năng hơn so với những gì được liệt kê dưới đây, nhưng mã này là một điểm khởi đầu cho một sự hiểu biết cơ bản về cách sử dụng chức năng tìm kiếm không gian mới ..

Xây dựng một tài liệu với một GeoPoint liên

## IMPORTS ## 
from google.appengine.api import search 

def CreateDocument(content, lat, long): 
    geopoint = search.GeoPoint(lat, long) 
    return search.Document(
    fields=[ 
      search.HtmlField(name='content', value=content), 
      search.DateField(name='date', value=datetime.now().date()) 
      search.GeoField(name='location', value=geopoint) 
      ]) 

Tìm kiếm lĩnh vực tài liệu GeoPoint (Hơi sửa đổi từ các tài liệu Search API)

## IMPORTS ## 
from google.appengine.api import search 

ndx = search.Index(DOCUMENT_INDEX) 
loc = (-33.857, 151.215) 

query = "distance(location, geopoint(-33.857, 151.215)) < 4500" 

loc_expr = "distance(location, geopoint(-33.857, 151.215))" 

sortexpr = search.SortExpression(
    expression=loc_expr, 
    direction=search.SortExpression.ASCENDING, default_value=4501) 

search_query = search.Query(
    query_string=query, 
    options=search.QueryOptions(
    sort_options=search.SortOptions(expressions=[sortexpr]))) 

results = index.search(search_query) 
Các vấn đề liên quan