Хотите ли вы найти авторов или вы хотите найти книги с указанным автором?
Если вы хотите найти книги с указанным автором, вы можете настроить классы вашего домена следующим образом.way:
class Author {
String name
...
static searchable = {
root false
}
}
это приведет к исключению Автора из searchableService.search(query)
-результата, и вы найдете имена полей, такие как $/Book/Author/name
в вашем индексе.(используйте luke для проверки вашего индекса: http://code.google.com/p/luke/).
Вы можете изменить имя этих полей, настроив лучший prefix
в вашем классе книг:
class Book {
String name
Author author
...
static searchable = {
author component: [prefix: 'author']
}
}
это изменитсяимя поля в индексе: bookauthor
.
Если вы сейчас выполните поиск с помощью searchableService.search(query)
, вы найдете все книги, в которых название книги или имя автора содержит поисковый термин.Вы даже можете ограничить поиск данным автором, используя синтаксис authorname:xyz
.
Если вы действительно хотите смешать результаты поиска, я знаю только решение, которое вы уже упомянули: смешивание обоихрезультаты с вашим собственным кодом, но я думаю, что будет сложно смешать оценку попаданий.
Обновление вашего ответа: Вот мой код нумерации страниц ...
.gsp:
<div class="pagination">
<g:paginate total="${resultsTotal}" params="[q: params.q]"/>
</div>
контроллер:
result = searchableService.search(params.q, params)
[
resultList: result.results,
resultsTotal: result.total
]
Так что, если вы просто объедините результаты двух поисков и добавите result.total
s, это может сработать для вас.