Google App Engine 数据存储区查询语言 (gql) 不提供不精确的运算符,例如“LIKE”,甚至不区分大小写。可以通过存储字段的小写版本来解决区分大小写的问题。但是如果我想搜索一个人但我不确定名字的拼写怎么办?是否有处理这种情况的公认模式?
问问题
1231 次
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,但是,我不相信它支持部分匹配。
于 2009-02-04T00:36:30.117 回答
1
您可以在数据存储中存储名称的 soundex http://effbot.org/librarybook/soundex.htm版本。然后,要查询一个名称,对查询进行 soundex,然后进行查找。
于 2009-05-11T07:27:42.120 回答