Google App Engine数据存储区查询语言(gql)不提供“LIKE”等不精确的运算符,甚至不区分大小写。通过存储字段的小写版本,可以解决区分大小写的问题。但是如果我想搜索一个人但我不确定这个名字的拼写怎么办?处理这种情况是否有可接受的模式?
答案 0 :(得分:8)
从文档中引用:
提示:查询过滤器没有明确的方法来匹配字符串值的一部分,但您可以使用不等式过滤器伪造前缀匹配:
db.GqlQuery("SELECT * FROM MyModel WHERE prop >= :1 AND prop < :2", "abc", u"abc" + u"\ufffd")
这将匹配每个MyModel实体,其字符串属性prop以字符abc开头。 unicode字符串u“\ ufffd”表示最大可能的Unicode字符。当属性值在索引中排序时,属于此范围的值是以给定前缀开头的所有值。
http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html
另一个选择是SearchableModel,但是,我不相信它支持部分匹配。
答案 1 :(得分:1)
您可以在数据存储区中存储名称的soundex http://effbot.org/librarybook/soundex.htm版本。然后,查询名称,对查询进行索引,然后查看。