2010-10-06 5 views
1

Je dois rechercher un grand nombre de fichiers texte (sur tous les disques d'un serveur Unix) pour une chaîne donnée (je dois). Compte tenu du temps et des ressources que cela va prendre, je pense que sortir avec la liste des fichiers qui contiennent le jeton en question est un maigre résultat, par rapport à l'investissement.Indexer un tas de fichiers texte

Cela semble incorrect. Étant donné que devra analyser tous ces fichiers, ne serait-il pas plus rentable de construire un index de ce contenu, au moins pour les statistiques?

Comment puis-je faire cela? Quel outil?

Tous les conseils ont apprécié :)

Répondre

0

Si vous devez faire un « temps » recherche, la mise en place d'un indexeur peut-être exagéré, mais si vous envisagez de faire plus d'une recherche, un outil intéressant j'ai entendu parler est

Il est déjà empaqueté au moins pour Debian, Ubuntu, gentoo, est indépendant de l'OS et DE, et a des interfaces graphiques et de ligne de commande.

+0

La compilation semble un peu difficile (nécessite Cmake et d'autres choses ..). Merci pour le plomb! – ExpertNoob1

0

Les fichiers vont-ils changer assez souvent pour que la maintenance de l'index soit un problème? Si c'est le cas, demandez-vous si vous l'utiliserez assez souvent pour justifier le temps et les efforts nécessaires pour le tenir à jour.

Personnellement, je venais d'utiliser find/-name \*.txt -exec grep -n "my search string" {} \; 2>/dev/null >/tmp/grep.out (ajuster les arguments selon le cas), puis asseyez-vous et d'écouter les bavardages de disque ...

0

j'utiliser

trouver. -type f -print0 | xargs -0 grep -Pl "chaîne"

mais j'ai ensuite commencé à utiliser ack qui est beaucoup plus rapide et, si nécessaire, ignore les fichiers de sauvegarde.

Faire un index de tout est une tâche énorme. J'ai même découvert que Berkeley BDB commence à ralentir après quelques centaines de millions d'entrées. Lucene (http://lucene.apache.org/) est une recherche de texte intégral indexée pour les sites Web. Http://www.lucene.apache.org/

Je suppose que cela pourrait être utilisé pour l'indexation du disque entier.

0

Essayez GLIMPSE. Il indexe rapidement et conserve un index relativement petit proportionnellement aux données, tout en cherchant toujours très efficacement.

Il est plus simple d'exécuter simplement l'indexeur en cron. Strigi semble bien, mais pas de binaire pour HP-UX.

Questions connexes