如何在对象化中使用Like查询

时间:2019-05-21 05:28:02

标签: objectify datastore

我想在db中的url文本中搜索子字符串。 像%substring%。 如何使用objectify解决此问题?

if(url != null) {
    xoloWebHistoryQ=xoloWebHistoryQ.filter("url >=", url);
    xoloWebHistoryQ=xoloWebHistoryQ.filter("url <", url+"\ufffd");
}

我在上面的代码中尝试过,但是它没有返回 urls ,而 substrings 在中间。

1 个答案:

答案 0 :(得分:0)

您要全文搜索。这并不是数据存储所擅长的事情-实际上,大多数数据库都不擅长此事,这就是为什么我们拥有像Elasticsearch这样的专门数据库。

如果您想用数据存储伪造它,可以。创建一个合成的,带索引的List属性,该属性填充在@OnSave方法中。用您要匹配的所有内容填充它:“ substring”,“ ubstring”,“ bstring”,“ ubs”等。然后对该字段进行相等匹配。请注意,这样可能会导致庞大的索引,但是如果您的数据足够紧凑,那么它将起作用。

如果要“真实”全文搜索,请将数据从数据存储中复制到其他更适合这种索引的内容。有托管的Elasticsearch服务。 GAE / Standard拥有旧的FTS服务,效果很好(尽管它可能不是一个好的长期解决方案)。如果您的需求很简单,甚至可以使用Postgres。