Busca de Livros por Palavras-Chaves

Pessoal, boa tarde, vocês poderiam me ajudar?

Estou desenvolvendo um sistema (TCC) que faz várias buscas utilizando-se de um nome digitado pelo usuário…
É um sistema para biblioteca onde as tabelas de livros possui três campos com palavras-chaves.
Estas palavras são escolhidas durante o cadastro do livro, elas buscam definir algo sobre o livro…

Estou utilizando java, jsf, hibernate, primefaces

Vou explicar minha intenção:
O usuário digita uma palavra para busca, tipo “Pedra”, o sistema tem três dataTables, a primeira simplesmente retorna a busca, analisando em todo o acervo livros que contenham a palavra “Pedra” no nome… Até aqui meu sistema está funcionando perfeitamente…
Então minha segunda dataTable irá coletar os livros que retornaram na primeira dataTable, pegar as 3 palavras-chaves de cada um destes livros (usando um For e uma List, não sei ainda como fazer…), e irá efetuar uma segunda busca procurando por palavras-chaves semelhantes as palavras-chaves dos livros da primeira busca, retornando então “livros relacionados” por meio destas palavras-chaves, a segunda dataTable possuirá exatamente isto: livros relacionados aos livros da primeira dataTable, por meio das palavras-chaves.

Alguém poderia me ajudar como farei a busca desta segunda dataTable? Seja por Criteria, NamedQuery, HQL, não importa, o importante é este retorno acontecer com eficiência.

Agradeço muito pela ajuda!!