Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在GQL中使用通配符--Google应用程序引擎_Python_Google App Engine_Google Cloud Datastore_Gql - Fatal编程技术网

Python 在GQL中使用通配符--Google应用程序引擎

Python 在GQL中使用通配符--Google应用程序引擎,python,google-app-engine,google-cloud-datastore,gql,Python,Google App Engine,Google Cloud Datastore,Gql,是否可以将通配符与GQL一起使用?我希望能够在其值的某个位置提取所有包含特定单词的记录。我不相信有类似的过滤器。以下是我想做的: 非常感谢您提供的任何建议- mentors_with_topic = db.GqlQuery("SELECT * FROM MentorServices WHERE Services LIKE 'Reading'").get() 对于您想要做的事情,最好使用1.7中添加的 有,但本质上是创建一个新的搜索索引和文档,您必须通过从现有数据创建它们来将它们添加到索引中。搜

是否可以将通配符与GQL一起使用?我希望能够在其值的某个位置提取所有包含特定单词的记录。我不相信有类似的过滤器。以下是我想做的: 非常感谢您提供的任何建议-

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

对于您想要做的事情,最好使用1.7中添加的

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

作为一种骇人听闻的替代方法,如果您将要搜索的自由文本存储在StringListProperty中,则可能需要更新模型并迁移数据以拆分为单个单词,然后您可以使用简单的相等运算符=进行搜索,该运算符大致相当于python中的:

search_string = "Reading"
q = MentorServices.all()
q.filter("Services =", search_string)
q.fetch()
我强烈建议使用搜索API而不是此API,因为:

您必须将要搜索的所有TextProperty字段迁移到StringListProperty字段,然后才能执行此操作 使用StringListProperty字段存储文本效率不高 创建替代搜索API正是为了避免此类解决方案。
如果您控制用户输入数据的方式,例如让他们输入一组技能作为标记,那么他们将更容易保存为StringListProperty,并且以这种方式进行搜索更有意义。要搜索非结构化文本,请使用搜索API。

有哪些示例可以与您的喜好相匹配?你不能随便做一个like,但是如果一个索引可以建立在你想做的基础上,那么它是可能的,我想让用户写几句bio,然后让其他用户能够通过他们bio中出现的关键字进行搜索。我的一个想法是将他们的bio字符串转换成一个列表..然后可能尝试匹配列表中的每个项目。这可能吗?如果你使用StringListProperty,我会说它可以工作。谢谢jozzas,这很有帮助。我将研究如何使用搜索API,我的退路是您使用标记的想法-