ogterran,

It should do one for the search and then one for each item in the search
result. If you are worried performance on the calls to the datastore you can
modify this code to make the ProductSearchIndex entity be a child of the
Product entity and  use a key only query to retrieve only the keys for the
search index entities (since we only really care about the Products anyway).

This will still to the same number of queries but will avoid the overhead of
deserializing the ProductSearchIndex objects (and the associated index list
property which might be long).

Something like the following should work:

class Product(db.Model):
       pid = db.StringProperty(required=True)
       title = db.StringProperty(required=True)
       site = db.StringProperty(required=True)
       url = db.LinkProperty(required=True)

class ProductSearchIndex(search.SearchableModel):
       # parent == Product
       title = db.StringProperty(required=True)

...
# where you write the Product
product = Product(pid = pid, title=title, site=site, url=url)
product.put()
index = ProductSearchIndex(parent=product, title=title)
index.put()

...
# where you search
keys = ProductSearchIndex.all(keys_only=True).search(query).fetch(100)
for key in keys:
    product = Product.get(key.parent())
    print product.url


On Tue, Jun 23, 2009 at 5:59 PM, ogterran <jonathanh...@gmail.com> wrote:

>
> Hi Ian,
>
> Thanks for the response.
> I have one question on number of datastore calls.
> How many datastore calls is the query below making?
> Is it 1 or 100?
>
> > class Product(db.Model):
> >        pid = db.StringProperty(required=True)
> >        title = db.StringProperty(required=True)
> >        site = db.StringProperty(required=True)
> >        url = db.LinkProperty(required=True)
> >
> > class ProductSearchIndex(search.SearchableModel):
> >        product = db.ReferenceProperty(Product)
> >        title = db.StringProperty(required=True)
>
> query = ProductSearchIndex.all().search(searchtext)
> results = query.fetch(100)
> for i, v in enumerate(results):
>        print v.product.url
>
> Thanks
> Jon
>
> >
>


-- 
=======================================
株式会社ビープラウド  イアン・ルイス
〒150-0012
東京都渋谷区広尾1-11-2アイオス広尾ビル604
email: ianmle...@beproud.jp
TEL:03-5795-2707
FAX:03-5795-2708
http://www.beproud.jp/
=======================================

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to