有没有办法使用类似于 SQL LIKE 语句的过滤器查询 GAE 数据存储?例如,如果一个类有一个字符串字段,并且我想在该字符串中查找所有具有特定关键字的类,我该怎么做?看起来 JDOQL 的 match() 不起作用......我错过了什么吗?
欢迎任何评论、链接或代码片段
有没有办法使用类似于 SQL LIKE 语句的过滤器查询 GAE 数据存储?例如,如果一个类有一个字符串字段,并且我想在该字符串中查找所有具有特定关键字的类,我该怎么做?看起来 JDOQL 的 match() 不起作用......我错过了什么吗?
欢迎任何评论、链接或代码片段
正如 GAE/J 文档所说,BigTable 没有这样的原生支持。您可以将 JDOQL String.matches 用于“something%”(即startsWith)。这就是全部。否则在内存中评估它。
如果您有很多项目要检查,您希望完全避免加载它们。最好的方法可能是在写入时间分解输入。如果您只搜索整个单词,那很容易
例如,“Hello world”变为“Hello”、“world”——只需将两者添加到多值属性中即可。如果您有很多文本,您希望避免加载多值属性,因为您只需要它来进行索引查找。您可以通过创建“关系索引实体”来做到这一点 - 有关详细信息,请参阅 bret slatkins Google IO talk。
您可能还想将输入分解为 3 个字符、4 个字符等字符串或词干 - 也许使用 lucene 词干分析器。