3

Google App Engine 数据存储区查询语言 (gql) 不提供不精确的运算符,例如“LIKE”,甚至不区分大小写。可以通过存储字段的小写版本来解决区分大小写的问题。但是如果我想搜索一个人但我不确定名字的拼写怎么办?是否有处理这种情况的公认模式?

4

2 回答 2

8

从文档中引用:

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

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

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

http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html

另一种选择是 SearchableModel,但是,我不相信它支持部分匹配。

http://billkatz.com/2008/8/A-SearchableModel-for-App-Engine

于 2009-02-04T00:36:30.117 回答
1

您可以在数据存储中存储名称的 soundex http://effbot.org/librarybook/soundex.htm版本。然后,要查询一个名称,对查询进行 soundex,然后进行查找。

于 2009-05-11T07:27:42.120 回答