Google app engine Google云数据存储获取包含项目的列表

Google app engine Google云数据存储获取包含项目的列表,google-app-engine,google-cloud-datastore,google-cloud-platform,Google App Engine,Google Cloud Datastore,Google Cloud Platform,我目前正在学习谷歌云数据存储、端点和NDB模型。到目前为止,我做得很好(完全是新手程序员),遇到了一个问题。我有一个属性,它是一个字符串,其中包含我要用于搜索的关键字。例子;烤面包,百吉饼,白面包,黑面包 我的查询当前提取一个精确的字符串匹配,但我希望它也进行部分字符串匹配。下面的代码确实有效,但IN语句似乎仍在寻找精确匹配。要告诉数据存储一个属性单独读取每个单词的分隔符是什么?或者我应该将其拆分为4个不同的属性字段 if len(search) == 4: for task

我目前正在学习谷歌云数据存储、端点和NDB模型。到目前为止,我做得很好(完全是新手程序员),遇到了一个问题。我有一个属性,它是一个字符串,其中包含我要用于搜索的关键字。例子;烤面包,百吉饼,白面包,黑面包

我的查询当前提取一个精确的字符串匹配,但我希望它也进行部分字符串匹配。下面的代码确实有效,但IN语句似乎仍在寻找精确匹配。要告诉数据存储一个属性单独读取每个单词的分隔符是什么?或者我应该将其拆分为4个不同的属性字段

 if len(search) == 4:
        for task in DirectionModel.query(DirectionModel.keywords == request.keywords, namespace='cookingDirections'):
            tasks.append(Direction(name=task.name, direction=task.direction, description=task.description,
                                   keywords=task.keywords))
    else:
        for task in DirectionModel.query(DirectionModel.keywords.IN([search]), namespace='cookingDirections'):
            tasks.append(Direction(name=task.name, direction=task.direction, description=task.description,
                                   keywords=task.keywords))
    return DirectionList(items=tasks)
型号:

class DirectionModel(ndb.Model):
name = ndb.StringProperty()
direction = ndb.StringProperty(indexed=False)
description = ndb.StringProperty()
keywords = ndb.StringProperty()
你可以用a来做这个

class DirectionModel(ndb.Model):

    ...
    keywords = ndb.StringProperty(repeated=True)
然后像这样提问

DirectionModel.query(DirectionModel.Keywords.IN(['toast', 'bagel', 'white', 'dark'])
这假设您正在将字符串列表与字符串列表进行匹配


请注意,这些类型的查询可能导致出现错误,因此,如果要执行复杂的关键字搜索,最好调查更新为添加模型的

。您应该使用数组属性(字符串数组)来存储关键字。然后你可以搜索任何一个关键字或关键字的组合。谢谢,我会给它一个tryWorks!我必须做一些类型转换,并更新我的数据存储条目。然而,如果我做土司,百吉饼,它仍然拉土司,面包,白色,中等。然而,我认为这只是我的逻辑工作的问题
中,操作员检查所存储的关键字是否在您提供的列表中。