1

是否可以在 GQL 中使用通配符?我希望能够提取在其值中某处包含特定单词的所有记录。我不相信有“喜欢”过滤器。这基本上是我想要做的:
非常感谢您提供的任何建议-

mentors_with_topic = db.GqlQuery("SELECT * FROM MentorServices WHERE Services LIKE 'Reading'").get()
4

1 回答 1

0

对于您想要做的事情,您可能最好使用searchAPI(在 1.7 中添加)。

可用的文档,但基本上您创建一个新的“搜索”索引和“文档”,您必须通过从现有数据创建它们来将它们添加到索引中。搜索索引是一种不同的、完全可搜索的索引类型,但仍存储在您的数据存储中。


作为对此的一种骇人听闻的替代方法,如果您将要搜索的自由文本存储在 a 中StringListProperty(您可能必须更新模型并迁移数据以拆分为单个单词),那么您可以使用“搜索”一个简单的相等运算符 ( =),大致相当于inpython 中的 an:

search_string = "Reading"
q = MentorServices.all()
q.filter("Services =", search_string)
q.fetch()

我强烈建议使用searchAPI 而不是这个,因为:

  • 您必须先将TextProperty要搜索的所有字段迁移到StringListProperty字段,然后才能使用
  • 使用StringListProperty字段存储文本效率不高
  • 替代searchAPI 正是为了避免此类解决方案而创建的。

如果您控制用户输入数据的方式,例如让他们输入一组技能作为标签,那么他们将更容易保存为 a StringListProperty,并且以这种方式进行搜索会更有意义。要搜索非结构化文本,请使用searchAPI。

于 2013-09-25T21:57:36.470 回答