首页 > 解决方案 > 在 ObjectBox 中,在 String 属性下搜索完整单词的简单方法是什么?

问题描述

我有一个名为“句子”的属性,它是一个字符串。假设我想找到所有包含“in”作为单词的句子(不是任何字符串片段)。有什么简单的方法?“包含”似乎不接受像“\bin\b”这样的正则表达式?

标签: objectbox

解决方案


我建议使用两级方法:

  1. 使用“包含”查询条件来减少没有正则表达式的候选人数量
  2. 使用正则表达式应用查询过滤器以获取实际结果

在代码中它应该看起来像这样:

Pattern pattern = Pattern.compile(myRegexPattern);
// Reduce object count to reasonable value.
box.query().contains(MyType_.myText, "in")
        // Filter is performed on candidate objects.
        .filter((obj) -> pattern.matcher(obj.myText).matches());

步骤 1 主要是将结果集从所有对象减少到候选对象。这在数据库端更有效地完成。


推荐阅读