2012-12-01 56 views
1

在Google App Engine中,如何匹配包含字符串的字符串?我的數據存儲包含'tester',如果我傳入'est',則應該返回測試人員。如何使用過濾器匹配包含字符串的字符串 - Google App Engine

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

但我收到此錯誤:A collection of values is required

我正確地使用過濾器,我不認爲。

+0

它似乎無法在應用引擎上執行通配符搜索:http://stackoverflow.com/questions/1402769/wildcard - 搜索 - 上AppEngine上合蟒蛇 –

回答

0

儘管應用程序引擎不支持通配符,但可能的解決方案是將所有可能的順序組合插入數據存儲區。

所以,如果想做的「設計」

添加以下條目通配符搜索:

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

這些是對「設計」通配符搜索所有可能的組合。儘管這非常浪費數據存儲內存。

1

您不能按照您所描述的方式使用IN濾鏡。如果你給出了一個字符串列表,並且想要匹配給定列表中的一個字符串,那麼IN工作。

搜索API存在你想要做什麼: https://developers.google.com/appengine/docs/python/search/overview

有可能發現使用搜索相比少大於/子字符串開頭的字符串,但你需要使用搜索API,如果你想在字符串中的任何位置找到子字符串。

0

由於字符串可以通過> =和<被compaired =你可以存儲組合:
設計
ESIGN
標誌
IGN
GN
ň

要搜索與「符號的所有名稱'在他們中,你會做一個查詢:

name> ='sign'AND name < ='sign \ uffffd'

實際上,您可能會將組合截斷限制爲4個字符;很少有人可能需要全部搜索結果來搜索所有名稱都是'n'的搜索結果。

相關問題