1

在 Google App Engine 中,如何匹配包含字符串的字符串?我的数据存储包含“tester”,如果我传入“est”,则应该返回 tester。

Filter myFilter =  new FilterPredicate("name",FilterOperator.IN, "est");

但我收到此错误:A collection of values is required

我认为我没有正确使用过滤器。

4

3 回答 3

1

您不能按照您描述的方式使用 IN 过滤器。如果您给出一个字符串列表,并且想要匹配给定列表中的一个字符串,则 IN 可以工作。

搜索 API 存在于您尝试执行的操作: https ://developers.google.com/appengine/docs/python/search/overview

可以使用大于/小于搜索来查找以子字符串开头的字符串,但如果要在字符串中的任何位置查找子字符串,则需要使用 Search API。

于 2012-12-03T00:20:59.560 回答
0

A possible solution to this, even though app engine does not support wildcards is to insert every possible sequential combination to the datastore.

So if wanted to do a wildcard search on 'design'

Add the following entries :

'd'
'de'
'des'
'desi'
'desig'
'design'
'e'
'es'
'esi'
'esig'
'esign'
's'
'si'
'sig'
'sign'
'i'
'ig'
'ign'
'g'
'gn'
'n'

These are all possible combinations for a wildcard search on 'design'. Although this is very wasteful of data storage memory.

于 2012-12-02T00:47:15.087 回答
0

由于字符串可以与 >= 和 <= 进行比较,因此您可以存储组合:
design
esign
sign
ign
gn
n

要搜索所有带有“sign”的名称,您可以查询:

名称 >= 'sign' AND 名称 <= 'sign\uffffd'

实际上,您可以将组合截断限制为 4 个字符;很少有人可能需要完整的结果集来搜索所有包含“n”的名称。

于 2016-10-07T13:22:50.240 回答