Domino 9 und frühere Versionen > ND6: Entwicklung
Volltextindex - Datum und Zahlenwerte
sb06:
Hallo,
ich habe ein Problem mit dem Volltextindizierung von Notesdatenbanken. Ich lasse via Agent alle Personendokumente suchen, deren _RevisionDate nach einem bestimmten Datum liegt. Dies ist über FTSearch() realisiert.
Leider musste ich feststellen, daß trotz der Einstellung, daß der Index sofort nach einem Zugriff aktualisiert wird, die Suche nach _RevisionDate nicht alle Dokumente findet. Nach sehr lange Suche fand ich folgenden Newsgroupartikel:
comp.groupware.lotus-notes.misc
http://groups.google.de/group/comp.groupware.lotus-notes.misc/browse_thread/thread/a415f920bbd92e95/462a393e7f5e09ec?lnk=st&q=_RevisionDate+Updated+By&rnum=1&hl=de#462a393e7f5e09ec
Darin wird beschrieben, daß Zahlen- und Datumswerte nur aktualisiert werden, wenn der Index entweder über:
1.) "File - FullText Search - Update index" aktualisiert wird oder
2.) Inital gebaut wird
Dieser Artikel bezieht sich auf Version 3.3 allerdings scheint dieser Bug(?) immer noch zu bestehen.
Nun hatte ich die Idee, den Index in meinem Agenten zunächst zu löschen und neu zu erzeugen
db.RemoveFTIndex()
db.CreateFTIndex(...)
auch UpdateFTIndex zeigt keine Wirkung.
leider scheint dieser Code nicht wirklich etwas zu tun (nach RemoveFTIndex ist der Ordner names.ft immer noch im Filesystem vorhanden)
Meine Frage(n) an Euch:
1.) Könnt ihr dieses Verhalten bestätigen (Datumswerte werden nicht aktualisiert) oder kann es an einer fehlerhaften Einstellung meinerseits liegen
2.) Habe ich eine Möglichkeit via Agent den Volltextindex _wirklich_ explizit neu zu erstellen?
Onkel Domino:
Hallo,
warum benutzt Du keine View um an die Dokumente zu kommen? Idealer Weise erstellst Du eine View, die nach RevisionDate sortiert ist. Dann kommst Du mit view.GetDocumentByKey schnell an das erste Dokument, welches Deinen Kriterien entspricht. Von da an geht's dann mit einer While not doc is nothing Schleife weiter.
PS: falls sich die gesuchten Personendokumente im Domino Directory befinden, dann lass lieber die Finger von Design der names.nsf
sb06:
Ich/wir darf/dürfen vom Auftraggeber aus keine Views erstellen. Ich hatte zunächst auch an eine Lösung über Views gedacht.
Ich habe momentan folgenden Workaround der mir (und dem Kunden) aber nicht sonderlich gefällt:
1. Schedule, der names.ft löscht
2. danach erstellt ein Agent den Index neu
3. Dann erfolgen die Operationen die nach _RevisionDate filtern
Wenn es wirklich ein Bug ist, wovon ich immer mehr ausgehe desto mehr ich teste, dann muss der Workaround herhalten. Ich wollte mich mit diesem Thread eigentlich nur vergewissern.
smoki:
Nach meiner Erfahrung, wird der Volltextindex nicht sofort gelöscht. Wenn man diesen neu erzeugen will, muss man einen Parameter anders setzen.
Beispielsweise Volltext für verschlüsselte Felder aktivieren bzw. deaktivieren. Das hat ja keine Auswirkung, wenn die Datenbank keine verschlüsselten Felder beinhaltet, aber wohl darauf, dass dieser wirklich
neu erzeugt wird.
Vielleicht wirkt es dann auch über deine genannten Befehle?! (Musst halt jeden Tag wechselnt aktivieren/deaktivieren)
Gruss
Chris
Onkel Domino:
Ich würde die Finger ganz von dem FT lassen. Das ist m.E. hier die falsche Herangehensweise.
Irgendeine View, die man für das Vorhaben gebrauchen könnte, müßte doch zu finden sein. Auch wenn Sie mehr als die gewünschten Dokumente enthält. Hauptsache sie erhält alle gewünschten.
Zur Not würde ich db.AllDocuments nehmen. Ist zwar nicht schön, aber vor solchen Problemen steht man halt, wenn man das Design nicht anfassen darf.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln