Grails - 使用不同的字段进行搜索

时间:2014-03-10 21:51:43

标签: grails plugins searchable

我正在使用Grails 2.3.x和Searchable插件

想象一下下一个域类书(String Author,String Title,Date pubDate);

我需要使用不同的字段进行搜索,例如;

我想在Field1: 03/03/2014Field2: 04/04/2014之间搜索出版日期(pubDate), 例如:Field1: 03/03/2014Field2: 04/04/2014之间标题为X和pubDate的图书

无论如何使用可搜索的插件进行不同参数的搜索?

非常感谢。

编辑: 我在哪里需要编写该代码?
def search = {
...
        Book.search {
                       gt("pubDate", field1)                      lt("pubDate", field2)
                    }
    }

1 个答案:

答案 0 :(得分:0)

Searchable提供了一个应该完成此任务的搜索构建器。您可以像这样进行搜索:

Book.search {
    gt("pubDate", field1)
    lt("pubDate", field2)
}

Book.search {
    term("title", x)
    gt("pubDate", field1)
    lt("pubDate", field2)
}

该代码将在索引中搜索符合条件的所有Book个对象,并返回ListBook个。您可以将其放在控制器或服务中。例如,这是控制器操作中的样子:

def searchBooks(String title, Date pubDate) {
    def books = Book.search(result: 'every') {
        term('title', title)
        gt('pubDate', pubDate)    
    }

    render view: 'list', [bookList: books]
}

请参阅此文档:http://grails.org/Searchable+Plugin+-+Searching+-+Query+Builder