Wir alle lieben die Flexibilität bei der
Entwicklung von Lotus Notes Anwendungen. Aber bisweilen kann Notes sehr
nachtragend sein.
Bei einem Kunden hatten wir gerade das
folgende Problem. Ein Feld in einer Notes Maske war im ersten Entwurf als
Nummernfeld definiert worden. Während der ersten Iteration stellte sich
heraus, dass aufgrund von führenden Nullen der Feldtyp auf Text geändert
werden musste. Solche Änderungen sind in Notes ja auch im Nachhinein möglich
und im ersten Moment funktionierte alles wie erwartet. Nur als ein wenig
später Anwender bei der Volltextsuche explizit nach dem Inhalt in diesem
Feld suchen wollten, bekamen sie diese unschöne Meldung:
Der Suchstring war mit FIELD
Feldname = "Wert"
aber eindeutig richtig.
Es hat einen kleinen Moment gedauert,
bis wir die richtigen Maßnahmen und die richtige Reihenfolge herausgefunden
hatten, um Notes zur Kooperation zu überreden.
Ich hatte im Forum
mehrere Einträge gelesen, dass
der Volltextindexer beim Anlegen des Index anhand des ersten gefundenen
Dokumentes entscheidet, welches Feld welchen Datentyp hat. Also haben wir
alle Dokumente mit dem falschen Datentyp gesucht und korrigiert. Anschließend
haben wir den Volltextindex gelöscht und neu erstellt. Die Fehlermeldung
blieb weiterhin bestehen.
Nach weiterer Recherche sind wir zu
dem Schluss gekommen, dass die UNK Tabelle vielleicht das Problem sein
könnte. UNK steht für "UNique Key Table" und bezeichnet
eine interne Tabelle, die in jeder Notes Datenbank/Anwendung eine Liste
aller Felder der Datenbank vorhält. Ein Komprimieren der Datenbank mit
Hilfe einer Kopie (Option "-c") schreibt diese Tabelle normalerweise
neu. Wie wir herausfinden mussten, wird die UNK Tabelle aber nicht neu
aufgebaut, wenn ein Volltextindex vorhanden ist.
Die folgenden Reihenfolge hat dann schließlich
zum Erfolgt geführt.
1. Volltextindex löschen
2. Konsolenbefehl compact
Datenbankpfad -c
3. Volltextindex wieder erstellen
Daraufhin wurden die Volltextsuche richtig
durchgeführt.
Das oben beschriebene Verfahren musste
bei jeder Replik wiederholt werden.