【发布时间】:2012-08-26 19:17:44
【问题描述】:
我正在尝试在 GAE 的数据存储中实现对特定实体类型的关键字/标签搜索:
class Docs(db.Model):
title = db.StringProperty()
user = db.StringProperty()
tags = db.StringListProperty()
我还编写了一个非常基本的搜索函数(使用一个虚假的标签列表,而不是数据存储值),它接受一个查询字符串并将其与每组标签进行匹配。它根据与标签匹配的查询词数对 Docs 进行排名。这几乎就是我需要做的所有事情,除了使用实际的数据存储区。
我不知道如何获取实际的数据存储区值。为了使我的搜索功能正常工作,我需要数据存储区中所有实体的列表,这是不可能的 (?)。
我还尝试研究 GAE 的实验性全文搜索和关系索引实体,作为在不使用我编写的函数的情况下搜索数据存储的一种方式。两者都没有成功。
关于如何根据标签搜索实体还有其他想法吗?
【问题讨论】:
-
搜索 api 可能是实现您的要求的更好选择。你说你调查过,没用。它在什么方面不起作用?
-
我不知道如何使用 api 搜索标签列表。它每天也只能处理 1000 次搜索……这有点小。
-
您可以要求更高的报价 - 它还处于早期阶段。至于搜索标签,它们可能只是一个包含所有标签的文本字段。有一个非常详细的示例代码——code.google.com/p/google-app-engine-samples/source/browse/trunk/…
-
如果您使用 StringListProperty 并开始尝试匹配多个标签,您最终会得到非常昂贵的查询。
-
否,但如果您正在查询匹配 3 个关键字的内容,那么您正在使用“IN”子句来查询字符串列表属性。我认为您需要阅读文档。
标签: google-app-engine search google-cloud-datastore