Google app engine 在谷歌应用引擎上实现关键词搜索?

Google app engine 在谷歌应用引擎上实现关键词搜索?,google-app-engine,search,google-cloud-datastore,Google App Engine,Search,Google Cloud Datastore,我正在尝试在GAE的数据存储中对某个实体类型执行关键字/标记搜索: class Docs(db.Model): title = db.StringProperty() user = db.StringProperty() tags = db.StringListProperty() 我还编写了一个非常基本的搜索函数(使用伪标记列表,而不是数据存储值),它获取一个查询字符串并将其与每一组标记相匹配。它根据与标记匹配的查询词数量对文档进行排序。除了使用实际的数据存储,这几乎

我正在尝试在GAE的数据存储中对某个实体类型执行关键字/标记搜索:

class Docs(db.Model):
    title = db.StringProperty()
    user = db.StringProperty()
    tags = db.StringListProperty()
我还编写了一个非常基本的搜索函数(使用伪标记列表,而不是数据存储值),它获取一个查询字符串并将其与每一组标记相匹配。它根据与标记匹配的查询词数量对文档进行排序。除了使用实际的数据存储,这几乎就是我需要它做的所有事情

但我不知道如何获得实际的数据存储值。为了使搜索功能正常工作,我需要数据存储中所有实体的列表,这是不可能的(?)

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


关于如何基于标记搜索实体,还有其他想法吗?

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

num_results = 10
query = Docs.all().filter("tags in", "findme")
results = query.fetch(num_results) # get list of results
有很好的记录:

对于实现您的需求,搜索api可能是一个更好的选择。你说你调查过了,但没用。它以什么方式不起作用?我不知道如何使用api搜索标签列表。它每天也只能处理1000次搜索…这有点小。你可以要求更大的报价-这是早期的报价。至于搜索标记,它们可能只是包含所有标记的文本字段。有一个非常详细的示例代码-如果您使用StringListProperty,并且开始尝试匹配多个标记,那么最终将得到非常昂贵的查询。没有,但是如果您查询的内容与3个关键字匹配,那么您将使用“IN”子句查询字符串列表属性。我想你需要读一些文件。