Grails - поиск по разным полям

Я использую Grails 2.3.x и плагин для поиска,

Представьте себе следующую книгу классов домена (Автор строки, Название строки, Дата pubDate);

Мне нужно сделать поиск по разным полям, например;

Я хочу искать книги с датой публикации (pubDate) между Field1: 03/03/2014 а также Field2: 04/04/2014Также, например: книги с названием X и pubDate между Field1: 03/03/2014 а также Field2: 04/04/2014

В любом случае сделать поиск с другими параметрами с помощью плагина для поиска?

Большое спасибо.

РЕДАКТИРОВАТЬ: Где мне нужно написать этот код?
def search = {
...
Book.search {
gt("pubDate", field1)lt("pubDate", field2)
}
}

1 ответ

Решение

Searchable предоставляет построитель поиска, который должен выполнить это. Вы можете сделать свой поиск следующим образом:

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

а также

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

Этот код будет искать в индексе все Book объекты, которые соответствуют критериям и возвращают List те Books. Вы можете поместить это в свой контроллер или в службу. Например, вот как это будет выглядеть в действии контроллера:

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

Другие вопросы по тегам