2011-11-16 33 views

回答

1

可搜索的,以及Elasticsearch插件似乎依赖于Hibernate插件,并且不适用于MongoDB GORM。我实现了一个简单的搜索服务蒙戈使用低级别的API,并蒙戈“$正则表达式”运营商:

下面是搜索名为“页面”

域类的“内容”属性的示例
class SearchService { 
    static transactional = false 
    def query(String query){ 
    return Page.collection.find(['content':['$regex':query, '$options': 'i']]).collect({ 
     it as Page 
    }) 

    } 
} 
0

基本上,卢卡斯T提到的正则表达式搜索是构建灵活搜索的最佳方式,但我不会推荐使用忽略大小写正则表达式搜索('$ options':'i')。在使用忽略大小写的情况下,mongodb不能使用索引,并且必须检查导致性能较差的每个文档。

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

查看此页面底部: http://docs.mongodb.org/manual/reference/operator/regex/

相关问题