python 中 Appengine 的通配符搜索

发布于 2024-08-04 12:09:46 字数 112 浏览 3 评论 0原文

我刚刚开始在 Google App Engine 上使用 Python 构建联系人数据库。实现通配符搜索的最佳方法是什么?

例如,我可以执行 query('name=', %ewman%) 吗?

I'm just starting with Python on Google App Engine building a contact database. What is the best way to implement wildcard search?

For example can I do query('name=', %ewman%)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

指尖凝香 2024-08-11 12:09:46

遗憾的是,Google 应用引擎无法进行部分文本匹配

来自文档:< /a>

提示:查询过滤器没有明确的方法来仅匹配字符串值的一部分,但您可以使用不等式过滤器伪造前缀匹配:

db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd")

这将与每个 MyModel 实体匹配以字符 abc 开头的字符串属性 prop。 unicode 字符串 u"\ufffd" 表示最大可能的 Unicode 字符。当属性值在索引中排序时,落在该范围内的值都是以给定前缀开头的所有值。

Unfortunately, Google app engine can't do partial text matches

From the docs:

Tip: Query filters do not have an explicit way to match just part of a string value, but you can fake a prefix match using inequality filters:

db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd")

This matches every MyModel entity with a string property prop that begins with the characters abc. The unicode string u"\ufffd" represents the largest possible Unicode character. When the property values are sorted in an index, the values that fall in this range are all of the values that begin with the given prefix.

半窗疏影 2024-08-11 12:09:46

App Engine 无法执行“类似”查询,因为它无法高效地执行这些查询。但是,您的 SQL 数据库也不能:“foo LIKE "%bar%"”查询只能通过对整个表进行顺序扫描来执行。

您需要的是倒排索引。 App Engine 中可使用 SearchableModel 进行基本全文搜索。 Bill Katz 在此处编写了增强版本,此处。

App Engine can't do 'like' queries, because it can't do them efficiently. Nor can your SQL database, though: A 'foo LIKE "%bar%"' query can only be executed by doing a sequential scan over the entire table.

What you need is an inverted index. Basic fulltext search is available in App Engine with SearchableModel. Bill Katz has written an enhanced version here, and there's a commercial solution for App Engine (with a free version) available here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文