Muitas vezes, é impraticável para uma aplicação lidar com um número muito grande de resultados. Por esse motivo, APIs e serviços web utilizam controles de paginação para permitir que os aplicativos solicitem os resultados em pequenos blocos ou páginas.
Você deve ter notado que, por padrão, o Elasticsearch não retorna mais de 10 resultados. O parâmetro opcional size pode ser fornecido em uma solicitação de pesquisa para alterar esse valor máximo. O exemplo a seguir solicita que sejam retornados até 5 resultados de pesquisa:
Para acessar páginas adicionais de resultados, o parâmetro from_ é usado, que indica de onde na lista completa de resultados começar (já que from é uma palavra-chave reservada em Python, from_ é usado).
O próximo exemplo recupera uma segunda página com 5 resultados:
Vamos incorporar size e from_ no endpoint handle_search() em app.py:
Aqui, o tamanho da página está agora fixo em 5 (sinta-se à vontade para usar qualquer outro número que desejar). O argumento from_ é considerado como um campo adicional no formulário enviado, mas este campo é considerado opcional, assumindo o valor padrão 0 quando não estiver presente.
O formulário de pesquisa disponível em index.html não possui um campo from_ , portanto, as pesquisas regulares sempre começarão a partir do primeiro resultado. O modelo exibe informações sobre o intervalo de resultados mostrados e qual é o total. Eis como isso é feito usando expressões de modelo:
O modelo também inclui lógica para exibir botões de paginação para avançar ou retroceder na lista de resultados. Aqui está a implementação do botão "Resultados anteriores":
Como você pode ver, o botão "Página anterior" só é exibido na página quando from_ é maior que zero. A implementação deste botão utiliza a API de histórico do navegador para voltar uma página.
O botão "Próxima página" tem uma implementação muito mais interessante:
Na verdade, este botão não é um botão independente, mas sim um formulário completo que possui dois campos ocultos além do botão. O formulário é semelhante ao formulário de pesquisa principal, mas inclui o campo opcional from_ , ajustado para apontar para a próxima página de resultados. Ao clicar neste botão, o aplicativo Flask receberá uma solicitação de pesquisa deste formulário alternativo, que usa a mesma consulta de texto, mas um valor diferente de zero from_ .
Com essa implementação de paginação simples e inteligente, você poderá navegar por várias páginas de resultados.
Anteriormente
Noções básicas de pesquisaPróximo
Filtros