Ich schreibe eine C # -Winform-Anwendung für ein Archivierungssystem. Das System verfügt über eine riesige Datenbank, in der einige Tabellen mehr als 1,5 Millionen Datensätze enthalten. Was ich brauche, ist ein Algorithmus, der den Inhalt dieser Datensätze indiziert. Hauptsächlich sind das Microsoft Office-, PDF- und TXT-Dokumente. kann jemand helfen? ob mit Ideen, Links, Büchern oder Codes, ich schätze es:)
Beispiel: Wenn ich in einem bestimmten Ordner in der Datenbank nach dem Wort "international" suche, erhalte ich alle Dateien, die dieses Wort enthalten, geordnet nach bestimmten Kriterien wie Relevanz, Änderungsdatum ... usw.
Sie müssen einen so genannten inversen Index erstellen, der den Kern der Funktionsweise von Suchmaschinen bildet (a la Google). Apache Lucene ist wohl die beste Bibliothek für invertierte Indexierung. Sie haben 2 Möglichkeiten:
Lucene.net - ein .NET-Port der Java Lucene-Bibliothek.
Apache Solr - ein vollwertiger Suchserver, der mit Lucene-Bibliotheken erstellt und problemlos in Ihre .NET-Anwendung integriert werden kann weil es eine RESTful API hat. Enthält Funktionen wie Caching, Skalierung, Rechtschreibprüfung usw. Sie können das Leben Ihrer App-to-Solr-Interaktion mit dem ausgezeichneten SolrNet Bibliothek.
Apache Tika bietet ein sehr umfangreiches Daten / Metadaten Extraktion Toolkit, das mit PDFs, HTMLs, MS arbeitet Office-Dokumente usw. Eine einfachere Option wäre die IFilter-API. In diesem Artikel finden Sie weitere Informationen.
Es sieht so aus als ob du zwei Dinge brauchst. Zunächst benötigen Sie ein System, das die Indizierung tatsächlich durchführt. Dazu können Sie mit Lucene oder Apache Solr gehen, wie Mikos erwähnte. Vielleicht möchten Sie auch Sphinx , die eine andere Volltext-Suchmaschine ist. Sie können auch die in Ihre Datenbank integrierten Volltextfunktionen verwenden. Sowohl SQL Server als auch MySQL verfügen über Volltextindizierungsfunktionen. Wie viele andere Datenbanken auch. Die zweite Sache, die Sie brauchen, ist eine Möglichkeit, den Text aus den Dateien zu holen. Für Dinge wie TXT-Dateien und HTML-Dateien ist dies einfach, weil die meisten Volltextsuchmaschinen sie als normalen Text akzeptieren. Für kompliziertere Binärdokumente wie MS Word oder PDF müssen Sie einen anderen Weg finden, um den Text daraus zu entfernen.
Meiner Meinung nach führen Sie eine Tabellenpartition aus, indizieren Sie die Tabellen mit den IDs und führen Sie dann die Suche durch.