Grails запрос подключаемого модуля с возможностью поиска

Приложение My Grails использует подключаемый модуль с возможностью поиска, который основан на Compass и Lucene для обеспечения функциональности поиска. У меня есть два класса с возможностью поиска, например, «Автор» и «Книга». Я сопоставил эти классы с индексом поиска, чтобы можно было искать только определенные поля.

Чтобы выполнить поиск по обоим классам, я просто вызываю

def results = searchableService.search(query)

. Одной из приятных особенностей одновременного поиска по обоим классам является то, что объект results включает метаданные о количестве включенных результатов, number доступных результатов, сведений о разбивке на страницы и т. д.

Недавно я добавил логический флаг разрешено в класс Book, и я никогда не хочу, чтобы неутвержденные книги появлялись в результатах поиска. Один из вариантов - заменить приведенный выше вызов на:

def bookResults = Book.search(query + " approved:1")
def authorResults = Author.search(query)

Однако теперь мне нужно выяснить, как объединить метаданные для обоих результатов, что, вероятно, будет сложно (особенно разбиение на страницы).

Есть ли способ выполнять поиск по книге и автору с помощью одного запроса, но возвращать только одобренные книги?

6
задан Dónal 12 January 2012 в 09:50
поделиться