O Desafio
O desafio na criação do programa primeiro começa em entender o que é a indexação de arquivos, que nada mais é que um processo computacional de se construir índices sobre uma base de dados. Índices são estrutura de dados que permitem a realização mais eficiente de operações como consulta (busca) por meio de um “resumo” dos dados existentes na base. Também foi necessário entender a questão da busca, tanto simples quanto composta para a implementação posteriormente.
Além disso, também têm o desafio da parte prática, ou seja, codificar, foi necessário aprofundar um pouco o conhecimento com manipulação de arquivos para a criação do índice, e também o conhecimento de manipulação de listas já que é essencial para a questão da busca tanta simples quanto composta.
Estruturando o Código
Para a estruturação do código usamos tanto listas encadeadas como listas duplamente encadeadas com sentinela, tanto para os arquivos quanto para as palavras, as palavras possuem um struct que guarda a palavra em questão, a quantidade de ocorrências e a quantidade de arquivos que a palavra é encontrada. A estruturação das ocorrências segue o mesmo esquema, existe uma struct que guarda o arquivo em que a ocorrência acontece, a quantidade de vezes que a palavra foi encontrada e a linha em que ela foi encontrada.
Já para a estruturação do índice do arquivo ele segue algo semelhante, também possui uma struct, ela possui as quantidades de arquivos lido para criação do índice, os arquivos em questão, e as quantidades de palavras de cada arquivo.