Igrep - Um Sistema para Busca Aproximada em Textos Indexados - Araújo, Márcio Drumond; Ziviani, Nivio (Anais do Simpósio Brasileiro de Engenharia de Software (SBES), 1997)
O presente trabalho apresenta o sistema IGREP para busca aproximada em textos de grande porte desenvolvido através da dissertação [Ara97]. O IGREP faz uso de uma lista invertida, composta por uma tabela contendo o vocabulário de palavras do texto e uma lista de endereços no texto correspondendo às ocorrências no mesmo de cada palavra do vocabulário. O tamanho do vocabulário é menos do que 1% do tamanho do texto como um todo, fazendo com que seja possível a sua manutenção em memória principal durante todo o processo de busca. Para consultas contendo uma palavra, a busca fica restrita apenas ao vocabulário. Para consultas contendo mais de uma palavra, a busca fica restrita ao vocabulário e respectivas listas de endereços, não havendo pois nenhum acesso ao texto na fase de pesquisa. O sistema permite desde a busca com erros ou não de palavras e frases até buscas de sequências complexas contendo conjuntos de caracteres, caracteres coringa e expressões regulares arbitrárias. O tempo de busca é O(√n) para casos típicos. Os resultados experimentais mostram que o sistema funciona bem na prática: para um texto de 1 gigabyte, casamentos compostos por 3 palavras com até 1 erro são recuperados em aproximadamente 6 segundos. No caso de busca sem erro, as ocorrências são obtidas em menos de meio segundo. O sistema contém duas ferramentas: O IGREPINDEX destinado a construção da lista invertida e o IGREP responsável pela parte de busca de padrões.