在GQL Google App Engin中使用通配符

2024-04-18 18:04:55 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以在GQL中使用通配符?我希望能够提取所有在其值中某个特定单词的记录。我不相信有一个“像”过滤器。以下是我要做的基本工作:
如果你能给我任何建议,我们将不胜感激-

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

Tags: from过滤器dbtopicwith记录where单词
1条回答
网友
1楼 · 发布于 2024-04-18 18:04:55

对于您想做的事情,最好使用^{} API(在1.7中添加)。在

docs available,但本质上您创建了一个新的“search”索引和“documents”,您必须通过从现有数据创建它们来将它们添加到索引中。搜索索引是另一种完全可搜索的索引类型,但它仍然存储在数据存储中。在


作为一种粗俗的替代方法,如果您将要搜索的自由文本存储在StringListProperty中(您可能需要更新模型并迁移数据以拆分为单个单词),那么您可以使用一个简单的等式运算符(=)对其进行“搜索”,该运算符大致相当于python中的in

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

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

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

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

相关问题 更多 >