在Google App Engine上实施关键字搜索?

时间:2012-09-01 02:09:38

标签: google-app-engine search google-cloud-datastore

我试图在GAE的数据存储区中实现某个实体类型的关键字/标签搜索:

class Docs(db.Model):
    title = db.StringProperty()
    user = db.StringProperty()
    tags = db.StringListProperty()

我还写了一个非常基本的搜索功能(使用虚假的标签列表,而不是数据存储区值),它接受一个查询字符串并将其与每组标签相匹配。它根据与标签匹配的查询字数对文档进行排名。除了使用实际的数据存储区之外,这几乎是我需要它做的全部。

我不知道如何获取实际的数据存储区值。为了使我的搜索功能起作用,我需要一个数据存储区中所有实体的列表,这是不可能的(?)。

我也尝试过将GAE的实验性全文搜索和关系索引实体作为一种搜索数据存储区的方法,而不使用我编写的函数。两者都没有成功。

关于如何根据标签搜索实体的任何其他想法?

1 个答案:

答案 0 :(得分:1)

这是一个非常简单的查询,如果您需要查找标签为“findme”的所有文档,则只需:

num_results = 10
query = Docs.all().filter("tags in", "findme")
results = query.fetch(num_results) # get list of results

有很好的记录: https://developers.google.com/appengine/docs/python/datastore/queries