Grails GORM MongoDB插件中是否有类似的方法,比如searchable search()方法?

Grails GORM MongoDB插件中是否有类似的方法,比如searchable search()方法?,grails,plugins,mongodb,gorm,searchable,Grails,Plugins,Mongodb,Gorm,Searchable,我使用的是Grails Searchable插件,现在我们切换到GORM MongoDB插件。 Searchable插件有一个方法search(),允许使用布尔连接器和通配符搜索所有字段。Grails GORM MongoDB插件中是否有类似的方法 如果没有,那么创建类似方法的最佳实践是什么?Searchable以及Elasticsearch插件似乎依赖Hibernate插件,而不适用于MongoDB GORM。我使用低级API和Mongo“$regex”操作符为Mongo实现了一个简单的搜索服

我使用的是Grails Searchable插件,现在我们切换到GORM MongoDB插件。 Searchable插件有一个方法search(),允许使用布尔连接器和通配符搜索所有字段。Grails GORM MongoDB插件中是否有类似的方法


如果没有,那么创建类似方法的最佳实践是什么?

Searchable以及Elasticsearch插件似乎依赖Hibernate插件,而不适用于MongoDB GORM。我使用低级API和Mongo“$regex”操作符为Mongo实现了一个简单的搜索服务:

下面是一个搜索名为“Page”的域类的“content”属性的示例


基本上,Lucas T提到的正则表达式搜索是构建灵活搜索的最佳方式,但我不建议使用ignore case正则表达式搜索(“$options”:“I”)。使用ignore case时,mongodb无法使用索引,必须检查每个文档,这会导致性能低下

我的方法是在文档中添加一个新字段,用于存储每个文档的标准化搜索关键字。我通常通过降低大小写和去掉正则表达式中难以处理的字符来规范化关键字——后者取决于您的数据和查询需要。正则表达式对开头的匹配也更有效地使用索引

请参见本页末尾的:

class SearchService {
  static transactional = false
   def query(String query){
    return Page.collection.find( ['content':['$regex':query, '$options': 'i']]).collect({
      it as Page
    })

  }
}