是否可以在 GQL 中使用通配符?我希望能够提取在其值中某处包含特定单词的所有记录。我不相信有“喜欢”过滤器。这基本上是我想要做的:
非常感谢您提供的任何建议-
mentors_with_topic = db.GqlQuery("SELECT * FROM MentorServices WHERE Services LIKE 'Reading'").get()
是否可以在 GQL 中使用通配符?我希望能够提取在其值中某处包含特定单词的所有记录。我不相信有“喜欢”过滤器。这基本上是我想要做的:
非常感谢您提供的任何建议-
mentors_with_topic = db.GqlQuery("SELECT * FROM MentorServices WHERE Services LIKE 'Reading'").get()
对于您想要做的事情,您可能最好使用search
API(在 1.7 中添加)。
有可用的文档,但基本上您创建一个新的“搜索”索引和“文档”,您必须通过从现有数据创建它们来将它们添加到索引中。搜索索引是一种不同的、完全可搜索的索引类型,但仍存储在您的数据存储中。
作为对此的一种骇人听闻的替代方法,如果您将要搜索的自由文本存储在 a 中StringListProperty
(您可能必须更新模型并迁移数据以拆分为单个单词),那么您可以使用“搜索”一个简单的相等运算符 ( =
),大致相当于in
python 中的 an:
search_string = "Reading"
q = MentorServices.all()
q.filter("Services =", search_string)
q.fetch()
我强烈建议使用search
API 而不是这个,因为:
TextProperty
要搜索的所有字段迁移到StringListProperty
字段,然后才能使用StringListProperty
字段存储文本效率不高search
API 正是为了避免此类解决方案而创建的。如果您控制用户输入数据的方式,例如让他们输入一组技能作为标签,那么他们将更容易保存为 a StringListProperty
,并且以这种方式进行搜索会更有意义。要搜索非结构化文本,请使用search
API。