Tópicos em Bancos de Dados: Sistemas de Informação Inteligentes 1997/2


 

O servidor


Este documento discute os tipos de dados e os serviços implementados pelo servidor de forma independente de implementação. Nosso propósito aqui é definir e formalizar os tipos de dados e as operações disponíveis para o uso efetivo do servidor
 

Tipos de dados e funções

Nesta seção discutiremos as estruturas de dados usadas pela aplicação para troca de dados entre os classificadores e o servidor TREC.

Veja as definições e convenções deste trabalho antes de prosseguir.

Vamos assumir a existência dos seguintes tipos de dados básicos: documento, texto, termo, frequencia, idf e norma. Vamos assumir ainda a seguinte notação: [ a1, ..., an ] representa um conjunto (possivelmente vazio) de elementos do mesmo tipo a, e ( a1, b1, ... , k1) representa uma tupla de elementos de tipos a, b, ... , k. Finalmente, vamos assumir que uma tupla ou um conjunto definem um novo tipo.

Nesse contexto, temos os seguintes tipos de dados definidos na aplicação:

Agora vamos definir as assinaturas das funções que serão implementadas pelo servidor e acessadas remotamente pelos programas classificadores.

Vamos recorrer apenas à definição básica de uma função: é uma computação que é aplicada sobre um dado de um determinado tipo e, opcionalmente, resulta em um dado de um certo tipo. Dizemos que
f : (p : a) -> b, é uma função que recebe um parâmetro p do tipo a e devolve como resultado um valor do tipo b. Assim, temos:


Descrição dos serviços implementados

Vamos descrever sucintamente o comportamento dos serviços implementados pelo servidor.  Este serviços correpondem às funções acima descritas. Apresentamos ainda alguns detalhes quanto aos casos de erro previstos e os valores retornados pelo servidor nestes casos.

lista_invertida:

Esta função faz uma pesquisa binária no vocabulário da coleção procurando pela palavra fornecida pelo programa de classficação. A estrutura retornada contém o identificador do termo, que é um inteiro, e uma lista onde cada entrada contém o identificador de um documento e a frequência do termo naquele documento.

Caso a palavra fornecida não seja encontrada no vocabulário da coleção, o identificador de termo retornado pela função conterá o valor -1.

termos_doc:

Esta função retorna um conjunto de pares termo, frequência associando todos os termos de um dado documento, fornecido como parâmetro, às suas respectivas frequencias naquele documento. Caso o documento fornecido não seja encontrado na coleção, será retornada uma lista vazia, ou seja, sem nenhum elemento.

fonte_documento:

Esta função retorna o texto fonte de um documento. Lembre-se que o texto fonte retornado está no formato SGML e o servido não faz nenhum processamento sobre o texto.  A intenção desta função é permitir que o usuário visualize o documento no momento de realimentar o sistema num processo de realimentação de relevantes.

Caso o identificador de documento seja inválido será retornado um texto vazio, ou seja, o único caractere retornado será um caractere NULO ('\0', em C).

norma_documentos:

Esta função recebe como parâmetro uma lista de (identificadores de) documentos e retorna uma lista contendo as normas de cada um deles, na mesma ordem da lista original. Assim, a norma do terceiro documento da lista de entrada estará na terceira posição da lista de resposta.

Se algum identificador de documento fornecido for inválido (negativo, por exemplo) o valor da norma retornado, para aquele documento apenas, será -1.  Os outros termos não serão afetados, ou seja, o valor da norma para cada um deles será retornado.

idf_termos:

Esta função é bastante semelhante a anterior quanto ao seu funcionamento. Ela recebe uma lista de (identificadores de) termos e retorna uma outra lista contendo o valor do idf para cada um destes termos na ordem em que aparecem na lista de entrada.

Novamente, caso haja algum problema o identificador de documento, o valor do idf associado àquele termo (apenas) será -1.

Sugestões para utilizações das funções acima:

As duas últimas funções passam listas de documentos e termos para serem pesquisados na coleção. Note que se você ordenar a lista antes de enviá-la ao servidor o tempo de serviço será menor.