Ich suche Dokumente, in denen das Wort ‚Rechnung‘ vorkommt. Hierbei möchte ich auch ‚Sammelrechnungen‘ und ‚Rechnungskorrekturen‘ finden, geht das?
Hier hilft der Stern * als Jokerzeichen bzw. Platzhalter. Ein Stern am Ende des Suchbegriffes ist ok, am Anfang aber problematisch.
Hintergrundinformation
Für die datenbankgestützte Volltextsuche wird ein Index der einzelnen Wörter angelegt. Im Prinzip ist dies eine Tabelle, in der alle Wörter alphanumerisch sortiert gelistet sind. Stark vereinfacht etwa so:
Wort | enthalten in |
---|---|
12345 | Berechnung.xlsx |
rechnung | Computerrechnung.pdf |
rechnungskorrektur | Gutschrift Nr 1643.pdf |
sammelrechnung | Zusammenfassung.pdf |
suchbegriff | Dokument.docx |
… | Meine Datei.txt |
In einem großen Dokumentenarchiv hat so eine Indextabelle schnell mehrere Millionen Einträge. Die Suche funktioniert trotzdem schnell, weil die Tabelle alphanumerisch sortiert ist.
Wenn Sie jetzt aber mit einem Joker am Wortanfang suchen, hilft die Sortierung nicht mehr. Für eine Suche nach *rechnung müssten alle Wörter in der Indextabelle verglichen werden. Da dies sehr lange dauert und viel Ressourcen verbraucht, ist so eine Suche in den meisten Datenbanksystemen nicht möglich.
Möglichkeiten in Office Manager DMS
Unsere Archivierungssoftware kann unterschiedliche Datenbanksysteme nutzen. Die Volltextsuche unterscheidet sich dabei im Detail.
SQLite und MS SQL mit Serversuche
SQLite-Archivdatenbanken erkennen Sie an der Dateiendung „.omsl“, SQL-Serverdatenbanken an „.omcs“. Beispiele für die Jokersuche:
- rechnung*: sucht nach Wörtern, die mit „rechnung“ beginnen.
- *rechnung: ist nicht möglich, weil ein Joker nur am Wortende zulässig ist.
Andere Datenbankformate
MySQl, MS SQL ohne Serversuche und die Access-Archive nutzen einfache Indextabellen für die Zuordnung von Wort zu Dokument. Dies ist weniger leistungsfähig, bietet bei der Jokersuche aber Vorteile:
- rechnung*: sucht nach Wörtern, die mit „rechnung“ beginnen. Der Stern am Ende muss nicht angegeben werden.
- rechnung*r: findet zum Beispiel „Rechnungsnummer“ und „Rechnungnr“.
- *rechnung: ist langsam, findet aber auch „Sammelrechnung“ und andere Wörter, die mit dem gesuchten Begriff enden.
- rechn?ng: das Fragezeichen ist ein Platzhalter für ein einzelnes Zeichen.
Ich habe eine Lösung des Problemes auch für SQLite gefunden:
Zunächst muss man wissen: Die Suche mit Jockerzeichen vor dem Suchwort funktioniert in alphanumerischen Datenbankfeldern wie „Name“ oder „Project“.
Office Manager übernimmt im Feld „contenttext“ den erkannten Text des Dokuments für die Indexierung.
Im Layout zur Dokumentensuche füge ich nun ein weiteres Suchfeld ein, das mit dem Feld „contenttext“ verbunden ist.
Nun kann ich in allen Dokumenten auch mit Jockerzeichen * und ? vor, im und nach dem Suchwort suchen. Ich muss allerdings immer die Sterne davor und dahinter eintragen:-)
Auch geht jetzt die Suche nach „*M??er*“ für Meyer, Meier, Mayer.
Die Lösung ist verständlicherweise ein Hilfsmittel für den Notfall oder für die Suche in Projekten mit wenigen und nicht so umfangreichen Dokumenten.
Sie funktioniert aber auch über die gesamte Datenbank mit entsprechender Laufzeit.
Hallo Herr Eckstein, vielen Dank für diese Lösung. Man sieht, dass Sie sich ausführlich damit beschäftigt haben.
Office Manager sucht dann direkt im mehrzeiligen Datenfeld „contenttext“. Dies funktioniert bei kleinen Archiven auch sehr schnell. Mit steigender Größe wird es langsamer, weil kein Index genutzt werden kann. Es ist aber auch dann noch schneller als manuell viele verschiedene Suchbegriffe auszuprobieren.
Hier noch ein Link zur Hilfe „Layoutdesigner“, mit dem das Suchfeld für contenttext plaziert wird.
Hallo Herr Krekeler,
vielen Dank für Ihre Antwort. Wie gesagt, es geht um eine „Notfallmaßnahme“, die einzusetzen ist, wenn das erwartete Dokument partout nicht zu finden ist. Es sollte also nicht über das gesamte Archiv eingesetzt werden sondern nur bei der Suche in Projekten.
Aber eins sollte noch ergänzt werden:
Die Suche nach Umlauten ist leider case sensitive: Also „Ü“ ist nicht gleich „ü“ („Überraschung“ „überraschung“).