gpt4 book ai didi

google-app-engine - ndb 查询部分字符串匹配

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:16 24 4
gpt4 key购买 nike

这看起来应该是一个简单的问题。但是the docs似乎没有回答它。使用他们的例子,我想这样做:

Account.query(Account.title == "best")

除了我也想匹配部分字符串。所以在这种情况下:

acct = Account(title="the best account in the world")

带有参数“best”的 ndb 查询将匹配 acct

目前我看到的唯一选择是遍历 Account.query() 并将每个 titlere.search 模块匹配在 python 。这似乎不是一个好的解决方案。

更新:我也在看gql。这样做:

acct = ndb.gql('SELECT * from Account WHERE title LIKE '%best%')

返回一个解析错误:在符号 LIKE 处无效的 WHERE 条件

最佳答案

注意:这并不能完全回答问题,但有人正在寻找 starts with可能会发现这个答案很有用。

NDB 的字符串字段以一种可以进行大于 (>=) 和小于 (<) 搜索的方式建立索引。假设以下 Person型号:

class Person(ndb.Model):
name = ndb.StringProperty()
name_lower = ndb.ComputedProperty(lambda self: self.name.lower())

您可以执行以下操作:

def search_by_text(text):
text = text.lower()
limit = text[:-1] + chr(ord(text[-1]) + 1)
return Person.query(Person.name_lower >= text, Person.name_lower < limit).fetch(50)

p = search_by_text('kri')

limit此示例中的变量将包含字符串“krj”并成为搜索值的限制。以上将为您提供所有姓名大于 kri 的人但小于 krj并限制为前 50 个结果。由于限制,名称如 krosslark将被过滤掉。

注意:重要的是你有一个 ndb.ComputedProperty包含您要搜索的字段的小写版本。不要忘记添加它!

关于google-app-engine - ndb 查询部分字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14291863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com