Algorithme d'indexation de texte

j'écris une application c # winform pour un système d'archivage. Le système a une base de données énorme où certaines tables auraient plus de 1,5 millions d'enregistrements. J'ai besoin d'un algorithme pour indexer le contenu de ces enregistrements. Principalement, les fichiers sont des documents Microsoft office, PDF et TXT. quelqu'un peut aider? que ce soit avec des idées, des liens, des livres ou des codes, je l'apprécie :)

exemple: si je cherche le mot "international" dans un certain dossier dans la base de données, j'ai tous les les fichiers qui contiennent ce mot classés selon certains critères tels que la pertinence, la modification de la date...etc

8
demandé sur OJ. 2010-12-23 04:09:41

3 réponses

vous devez créer, ce qui est connu comme un index inversé - qui est au cœur du fonctionnement des moteurs de recherche (à la Google). Apache Lucene est sans doute la meilleure bibliothèque pour l'indexation inversée. Vous avez 2 options:

  1. Lucene.net - un port .NET de la bibliothèque Java Lucene.

  2. Apache Solr - un serveur de recherche à part entière construit en utilisant les libs de Lucene et facilement intégrable dans votre application .NET parce qu'il a un API RESTful. Sort de la boîte avec plusieurs fonctionnalités telles que la mise en cache, la mise à l'échelle, la vérification orthographique, etc. Vous pouvez rendre la vie plus facile pour votre app-to-Solr interaction en utilisant l'excellent SolrNet bibliothèque.

  3. Apache Tika offre une très vaste boîte à outils d'extraction de données/métadonnées qui fonctionne avec les documents PDF, HTMLs, MS Office, etc. Une option plus simple serait L'API IFilter. Voir l'article pour plus de détails.

8
répondu Mikos 2010-12-23 01:46:58

On dirait que vous avez besoin de deux choses. Tout d'abord, vous avez besoin d'un système qui effectue l'indexation. Pour cela, vous pouvez aller avec Lucene, ou Apache Solr comme Mikos l'a mentionné. Vous pourriez également vouloir vérifier Sphinx qui est un autre moteur de recherche plein texte. Vous pouvez également utiliser les fonctions de texte intégral intégrées dans votre base de données. SQL Server et MySQL ont toutes deux des capacités d'indexation de texte intégral. Comme de nombreuses autres bases de données. La deuxième chose que vous avez besoin est un moyen d'obtenir le texte de le fichiers. Pour des choses comme les fichiers txt, et les fichiers HTML, c'est facile parce que la plupart des moteurs de recherche plein texte les accepteront comme texte régulier. Pour les documents binaires plus compliqués comme MS Word ou PDF, vous devrez trouver un autre moyen d'extraire le texte.

1
répondu Kibbee 2010-12-23 01:53:37

selon moi, effectuer une partition de table, indexer les tables avec les id et puis effectuer la recherche.

0
répondu 2010-12-23 03:02:41