Indexação de texto completo amigável à linha de comando?

37

Existe um mecanismo de indexação de texto completo, que pode ser consultado na linha de comando e, idealmente, não exigiria o uso de uma GUI?

Estou especialmente interessado em indexar meus e-books e documentos, de modo que é uma mistura de pdf, epub e alguns djvu. Os documentos (abertos) do Office seriam bons, mas muito mais baixos na minha lista.

julien
fonte
11
você pode ser mais específico sobre qual formato o índice leva?
Ixtmixilix 13/10/10
Bom ponto, editado.
Jul10
-1 Como indicado abaixo, Lucene ou Tracker são boas escolhas, mas qual é o seu problema com "use gtk, ou ainda pior qt"? Usando apenas a linha de comando é bom, mas eu não vejo o ponto de criticar um conjunto de bibliotecas ...
tmow
2
@tmow: ponto tomado, questão editada. Não pretendia minar o trabalho árduo de ninguém, desculpe se foi assim que aconteceu ...
julien

Respostas:

11

Você já olhou para Lucene ou Sphinx? Embora você precise analisar inicialmente os documentos que deseja indexar, uma vez feito isso, qualquer um pode pesquisar no CLI.

Para Lucene, há algumas informações sobre como fazer isso disponível .

Sphinx, é um pouco mais vago, mas também há alguma documentação disponível . Você pode transmitir dados XML estruturados de sua escolha para o sphinx por meio da fonte de dados xmlpipe2.

O Lucene depende do Java, enquanto o Sphinx é construído em C ++, sem dependências externas necessárias.

Qualquer um deles exigirá um pouco de trabalho para fazer o que você deseja, mas parece uma solução totalmente viável.

Gabe.
fonte
11
Como um aparte, se você deseja indexar dados que estão em um banco de dados (postrgres, mysql), qualquer um deles também funciona incrivelmente bem.
Gabe.
hmm, eu tinha demitido esfinge por ser muito baixo nível, mas olhando para xmlpipe2 parece um script wrapper para PDF2TXT ou similar seria muito fácil ...
Julien
+1 por mencionar em Lucene. Eu tive bons momentos com Lucene, é uma coisa matadora !!
precisa saber é o seguinte
Acredito ElasticSearch é baseado no Lucene, e pode ser mais conveniente para o uso (sendo uma coisa de nível superior).
offby1
5

confira xapian . Possui interface de linha de comando e pode indexar muitos formatos.

Michał Šrajer
fonte
O xapian é um ótimo índice, meu favorito pessoal, e está escrito em C ++ nativo !. Algo que usa o xapian seria o ideal, para muitos projetos que exigem a indexação +1.
JM Becker
4

O Recoll pode ser criado sem GUI e pesquisará os tipos de documentos na linha de comando.

Ele usa Xapian sob o capô.

user2391635
fonte
3

O rastreador pode ser chamado a partir da linha de comando e o gtk + não é uma dependência difícil para um projeto (mas pode ser para pacotes).

Maciej Piechotka
fonte
Bem, se não me engano, ele ainda tentará puxar (grandes partes) do gnome como uma dependência.
Jul13
11
Como eu disse - projeto (na versão 0.9.x pelo menos a única dependência difícil do GNOME é glib). Os pacotes podem compilar a equipe padrão como a GUI, portanto, você pode precisar compilá-lo manualmente.
Maciej Piechotka 13/10/10
3

Esta resposta recomenda o uso da pesquisa de códigos do Google ,

A Pesquisa de código é uma ferramenta para indexar e, em seguida, executar pesquisas de expressão regular em grandes corpos de código-fonte.

Superusuários no Debian / derivativos podem tentar: sudo apt-get install codesearch

joeytwiddle
fonte
11
esta resposta tem alguns detalhes sobre a instalação da fonte; caso não esteja disponível em repositórios para seu sistema operacional: superuser.com/a/1263343/65975
ccpizza
2

Atualmente, existem dois fluxos de Tracker, estável (0,8) e instável (0,9). Seu sistema operacional provavelmente tem a versão 0.8, portanto, se você puder pagar (ele tem algumas dependências de software de ponta ), vá para o tarfile mais recente (0.9.x). Ele tem muitas melhorias acima de 0,8 e está sendo estabilizado ainda mais para ser 0,10 (números pares representam estabilidade). Se você optar por seguir esta rota, use este comando para configurar:

./configure --disable-tracker-needle --disable-tracker-preferences --disable-tracker-explorer --disable-tracker-status-icon

Você provavelmente não terá as dependências instaladas, por isso deve ser mais fácil instalar 0.8 da sua distribuição e evitar os bits da GUI. No Debian Squeeze, Ubuntu 10.10 e Ubuntu 11.04, eles são bem divididos. Então ( como root ) execute:

apt-get install --no-install-recommends tracker-utils tracker-miner-fs

A ferramenta CLI para isso é tracker-search, então execute-a com a --helpopção para ver como tirar proveito dela :-)

notas :

  • No Fedora 14, o pacote Tracker tem dependências no GTK +. Eu acho que é porque inclui coisas como tracker-applete tracker-preferences. No entanto, eles têm um pacote separado para tracker-search-toola interface de pesquisa da GUI.
  • DjVu e ePUB ainda não são suportados. Aqui está uma lista do que é .
tshepang
fonte
0

Trabalhei na redação de uma ferramenta de pesquisa de texto completo (um novo propósito) para indexar e pesquisar páginas de manual do NetBSD neste verão usando o Sqlite3. Consiste em duas ferramentas de linha de comando:

  • makemandb: que analisa e constrói um índice do conteúdo das páginas de manual.
  • apropos: a ferramenta para consultar este índice.

Você pode escrever facilmente uma ferramenta semelhante para si mesmo, para os PDFs, você precisará de uma biblioteca para analisar documentos em PDF e de um utilitário semelhante para analisar os documentos abertos do escritório.

Você pode ler mais sobre o projeto aqui

O código está aqui

Abhinav Upadhyay
fonte