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