fevereiro 9, 2017 12:00 pm Publicado por major Deixe um comentário
Na Parte 01 desta série de artigos, eu mostrei como usar dois serviços importantes: conversão de documento e extração de palavra-chave. Também mostrei como usar esses serviços em um aplicativo real que permite que os usuários armazenem e indexem de forma inteligente os documentos PDF, para aumentar a eficiência das procuras.
Nesta parte de conclusão, vou introduzir o serviço de armazenamento de objeto do IBM® Bluemix™ que fornece uma infraestrutura de armazenamento de objeto confiável e compatível com os padrões. Vou mostrar como usar o serviço com PHP para criar um local ideal para seus uploads de PDF.
"Neste segmento de conclusão, vamos aprimorar a solução de armazenamento de documento, incluindo a procura de palavra-chave e uma recuperação de arquivo PDF e, em seguida, implementá-la no Bluemix".
Também vou mostrar como criar um mecanismo de procura que utiliza os índices de texto do MongoDB para permitir a procura de palavra-chave no novo armazenamento de documento e, em seguida, realizar o processo de implementação no IBM Bluemix. Continue lendo, ainda tem muito mais!
Obtenha o código GitHub
O serviço de armazenamento de objeto facilita o armazenamento e a recuperação de dados não estruturados na nuvem do Bluemix. Ele oferece suporte para a API OpenStack Swift e segue a hierarquia de três camadas do Swift para organizar dados: contas, contêineres e objetos. Funciona da seguinte forma:
A unidade principal na hierarquia é uma conta. As contas correspondem a usuários. Para acessar uma conta, o usuário deve fornecer credenciais de autenticação;
Uma conta pode hospedar vários contêineres que, em geral, equivalem a pastas ou subdiretórios em um sistema de arquivos tradicional;
Para ver isso em ação, inicialize uma nova instância do serviço de armazenamento de objeto no Bluemix, efetuando login na sua conta. Procure e selecione o serviço de armazenamento de objeto.
Revise a descrição do serviço e clique para ativá-lo. Assegure-se de que o campo "Conectar a" esteja definido como "Deixar desvinculado" e que você esteja usando o "Plano grátis". Inicialmente, essa instância do serviço é executada em um estado desvinculado. Semelhante à instância do serviço de Conversão de Documento na Parte 01, esse estado desvinculado permite que o aplicativo seja desenvolvido localmente com a própria instância do serviço hospedada remotamente no Bluemix.
A instância do serviço é inicializada e, após a conclusão, é apresentada uma página de informações do serviço. Exiba a barra de navegação à esquerda e clique no link "Credenciais do serviço" para visualizar a URL, a região, o nome de usuário, a senha e outras credenciais da instância do serviço. Anote todas essas credenciais porque elas serão necessárias nas próximas etapas.
Agora é possível fazer um teste com o serviço de armazenamento de objeto usando um cliente REST, como o Postman, para enviar algumas solicitações de exemplo. Comece enviando uma solicitação de POST à URL de autenticação para o serviço, com o nome do usuário do serviço e a senha. Se a autenticação for bem-sucedida, o servidor retornará um código de resposta 200 OK e um cabeçalho X-Subject-Token contendo um token de autenticação que deverá ser usado para as próximas solicitações.
Com o token de autenticação e a URL do terminal, é possível começar a interagir com o serviço de armazenamento de objeto usando a API Swift. Por exemplo, para incluir um novo contêiner, envie uma solicitação de PUT para a URL do terminal, incluindo o nome do novo contêiner no final da URL e lembrando-se de incluir um cabeçalho X-Auth-Token na solicitação com o token de autenticação. Portanto, se a URL do terminal for https://xyz.objectstorage.softlayer.net/AUTH_123, envie uma solicitação de PUT para https://xyz.objectstorage.softlayer.net/AUTH_123/container1, para criar um novo contêiner chamado "container1". Aqui está um exemplo:
O pacote do php-opencloud foi incluído no arquivo de dependência do editor, mostrado na Parte 01 deste artigo, portanto, ele já deve estar instalado no seu sistema de desenvolvimento. Antes de usá-lo, copie suas credenciais do serviço de armazenamento de objeto para o aplicativo PHP. Edite o arquivo $APP_ROOT/config.php e inclua as credenciais como no exemplo abaixo:
Esse retorno de chamada manipula as solicitações do terminal da URL /search e verifica se há uma cadeia de caractere de consulta na URL de solicitação. Caso seja encontrada uma cadeia de caractere de consulta, ele inicializará o cliente MongoDB e usará o método find()do cliente para gerar e executar uma consulta de procura do MongoDB no índice do texto. Primeiro, os resultados serão classificados mostrando os documentos com as atualizações mais recentes. O método find() retorna um cursor para essa coleção de resultados, e esse cursor é passado ao script de visualização para exibição.
Aqui está o código para o manipulador /download que executa todas as tarefas acima (clique aqui para ver a lista de documentos).
O objeto de resposta do Slim é modificado para incluir vários cabeçalhos, incluindo o Content-Type, Content-Disposition e o Content-Length, que informam ao navegador que há um objeto binário a seguir. Em seguida, o fluxo é anexado ao objeto de resposta com o método withBody() e a resposta completa é enviada ao cliente da solicitação.
Neste momento, o aplicativo está concluído e pode ser implementado no Bluemix. Para fazer isso, primeiro crie o arquivo manifest do aplicativo em $APP_ROOT/manifest.yml, lembrando-se de usar um nome de host e de aplicativo exclusivo, anexando a ele uma cadeia de caracteres aleatória (como suas iniciais).
Além disso, se você desejar que as credenciais dos serviços conversão de documento e armazenamento de objeto sejam obtidas automaticamente do Bluemix, atualize o script $APP_ROOT/public/index.php para usar a variável VCAP_SERVICES da seguinte forma:
$app = new SlimApp($config);
Agora é possível realizar o push do aplicativo para o Bluemix e, em seguida, ligar a ele os serviços de conversão de documento e armazenamento de objeto inicializados na Parte 01. Lembre-se de usar o ID correto para cada instância de serviço para assegurar-se de que elas sejam ligadas corretamente ao aplicativo.
Este artigo focou na orquestração de vários serviços do Watson e do Bluemix para resolver um problema comum: filtrar rapidamente uma grande coleção de documentos para localizar somente aqueles que correspondem a determinadas palavras-chave. Ao combinar computação cognitiva com um armazenamento e uma infraestrutura em nuvem confiáveis e escaláveis e um pouco de PHP para fazer a ligação, foi demonstrado como é fácil para os desenvolvedores criarem soluções eficientes para procura e armazenamento de documentos na nuvem.
Se desejar experimentar os serviços discutidos neste artigo, comece com a demo live do aplicativo. Lembre-se que se trata de uma demo pública, portanto, tenha cuidado para não fazer upload de informações confidenciais (há também um botão "Reconfigurar sistema" muito útil, para apagar todos os dados transferidos por upload). Em seguida, faça download do código a partir de seu repositório GitHub e analise em detalhes para ver como tudo combina perfeitamente.
Este artigo focou somente um caso de uso específico, mas usando outros serviços do Bluemix e do Watson, é possível fazer mais combinações para criar outros aplicativos cognitivos para manipulação de documentos. Consulte os links na parte superior de cada seção para saber mais sobre o serviço de Conversão de Documento do Bluemix, a API de Extração de Palavra-chave AlchemyAPI, o serviço de armazenamento de objeto do Bluemix, a microestrutura Slim e outras ferramentas e técnicas usadas neste artigo.