Eu encontrei o que estava procurando. Swish ++ pode indexar um diretório de arquivos (não apenas texto), e é basicamente um conjunto de ferramentas de linha de comando. Parece ser uma reescrita de Swish-e .
Eu estou procurando qualquer ferramenta de linha de comando de código aberto ou ferramentas que me permitam indexar e pesquisar um grande número de arquivos de texto simples. A pesquisa aproximada seria uma vantagem. A ferramenta só precisa imprimir os arquivos correspondentes, embora algum contexto de correspondência seja útil. Uma ferramenta GUI não é útil para meu aplicativo, nem nada que pesquise arquivos um por um (grep por exemplo). Basicamente estou direcionando plataformas unix (osx, linux, bsd).
EDIT: Eu não estou interessado em qualquer tipo de ferramenta que é todo o sistema, ou precisa ser executado em segundo plano. Basicamente, eu quero construir um índice para uma árvore de diretórios cheia de arquivos de texto e depois poder procurar por ele. De preferência, o índice é um ou alguns arquivos que eu posso especificar a localização de.
Alguma idéia?
Eu encontrei o que estava procurando. Swish ++ pode indexar um diretório de arquivos (não apenas texto), e é basicamente um conjunto de ferramentas de linha de comando. Parece ser uma reescrita de Swish-e .
Se você quiser pesquisar arquivos por nome de arquivo :
A ferramenta padrão do Unix para isso é localizar . Ele cria um banco de dados de arquivos em uma tarefa cron e, em seguida, locate
pesquisa as correspondências.
Faz parte da maioria das distribuições do Linux (geralmente o pacote "locate" ou "mlocate").
Se você quiser pesquisar arquivos pelo conteúdo :
Há uma variedade de mecanismos de pesquisa disponíveis que indexam documentos para você (alguns até suportam outros formatos além de texto simples, por exemplo, documento de processador de texto). Os exemplos seriam Beagle e pesquisa no Google Desktop . Há uma lista bastante exaustiva na Wikipedia:
Editar:
Se você não quiser que um mecanismo de pesquisa seja executado em segundo plano ou indexe automaticamente todos os seus arquivos, provavelmente você ainda poderá usar um mecanismo de pesquisa da área de trabalho. A maioria deles permite controlar o processo de indexação, para que você possa iniciar a indexação manualmente e especificar quais diretórios indexar e onde colocar o arquivo de índice.
A melhor coisa que você pode fazer é alimentar os arquivos de texto em um banco de dados MySQL e usar seu sistema de correspondência FullText. Isso resultará em pesquisas muito rápidas com classificações sobre a correspondência dos resultados com a pesquisa.
A interface de um banco de dados MySQL com outros sistemas, como um site para pesquisa de documentos, etc, seria uma tarefa bastante simples.
Recursos úteis:
Eu costumava usar swish-e , mas isso foi há uma década. O desenvolvimento parece ter parado desde então (às vezes parado significa "estável", não "morto"), mas pode funcionar para você.
Se um pouco de script python é bom para você, dê uma olhada em whoosh: link
E, er, eu acho que você olhou para o grep. Se o seu banco de dados for pequeno o suficiente para caber na RAM (cache de buffer), isso é realmente muito rápido. Depende de quão complexas são as suas consultas, é claro.
Tags command-line search unix