2012-11-09 108 views
5

Tôi muốn sử dụng API tìm kiếm với một ứng dụng đã sử dụng một mô hình được xác định (db.Model).Sử dụng Python API tìm kiếm - Google App Engine Big Table

Ví dụ, giả sử rằng mô hình của tôi trông như thế này:

class Greeting(db.Model): 
    author = db.StringProperty() 
    content = db.StringProperty() 
    date = db.DateTimeProperty() 

Bây giờ làm thế nào để sử dụng API tìm kiếm để truy vấn đơn vị Greeting?

Tôi đã đọc the documentation nhưng thành thật mà nói, tôi không hiểu điều đó.

Vui lòng cho tôi một ví dụ rất đơn giản.

Trả lời

5

Bạn không.

API tìm kiếm cần tìm kiếm "tài liệu" mà bạn đã tạo, không phải mô hình từ kho dữ liệu.

  1. tài liệu xây dựng cấu trúc với các lĩnh vực để mô tả dữ liệu bạn muốn để tìm kiếm
  2. Tạo một chỉ mục các văn bản bạn muốn tìm kiếm
  3. Xây dựng các truy vấn để tìm kiếm các chỉ số
  4. yêu cầu tìm kiếm xây dựng để chạy các truy vấn đối với các tài liệu trong kết quả Điểm ứng dụng của bạn và tùy chỉnh bản trình bày của họ cho người dùng

Bạn sẽ phải viết một công cụ chuyển đổi tải dữ liệu từ các mô hình của bạn và tạo các tài liệu có thể tìm kiếm mà sau đó có thể được đưa vào chỉ mục.

E.G. từ tài liệu để tạo tài liệu:

from google.appengine.api import search 

search.Document(
    doc_id='document id', 
    fields=[search.TextField(name='subject', value='going for dinner'), 
      search.HtmlField(name='body', value='<html>I found a place.</html>'), 
      search.TextField(name='signature', value='brzydka pogoda', language='pl')], 
    language='en') 

Vì vậy, tài liệu đó có 3 trường riêng biệt có thể được tìm kiếm riêng lẻ.

The Document Class

+0

Cảm ơn. Vậy lớp Tài liệu là một cách mới cho dữ liệu lưu trữ? Có bất kỳ lợi thế hay bất lợi của việc sử dụng tài liệu thay vì db.Model (tất nhiên ngoại trừ API tìm kiếm)? Tài liệu được lưu trữ bằng BigTable? – gather

+0

Chúng hoàn toàn khác nhau. Vì vậy, nó không phải là một trường hợp của lợi thế hay bất lợi, đó là về những gì nó là bạn cần phải làm và tùy chọn nào cho phép điều đó. Không quan trọng dữ liệu nguồn của bạn hiện được lưu trữ như thế nào, bạn vẫn sẽ phải viết một cơ chế để chuyển đổi nó thành tài liệu có thể tìm kiếm được. –