Ich habe eine Anwendung verwendet Viewpanels, um Daten anzuzeigen. Ein Viewpanel zeigt unverarbeitete Datensätze und der andere zeigt verarbeitete Datensätze an. Der Benutzer wählt einen nicht verarbeiteten Datensatz aus (indem er die show-Werte in dieser Spalte als Linkoption verwendet) und wird auf eine Seite geleitet, auf der er Informationen eingibt. Klicken Sie dann auf die Schaltfläche, die die Dokumente mithilfe von doc.replaceItemValue-Anweisungen in JavaScript aktualisiert. Der Benutzer wird dann zurück zum Viewpanel geleitet, das die unbearbeiteten Datensätze anzeigt. Damit der gerade verarbeitete Datensatz nicht in den unbearbeiteten Datensätzen angezeigt wird, muss die Datenbank neu indiziert werden. Ich verwende database.updateFTIndex (false), um dies zu erreichen.
Gibt es einen besseren Weg, dies zu erreichen? Wenn zwei weitere Benutzer Datensätze übermitteln, werden ihre einzelnen Indizes aufeinander treten?
Ich musste mich nie sorgen, wenn ich mysql benutze. Danke für jeden Hinweis.Volltextindizierung nach dem Ändern eines Datensatzes
Antwort
Ich habe diese Technik für eine Weile in der Produktion verwendet und keine Probleme gemeldet. Das Aktualisieren eines Index über die Datenbankeigenschaften oder eine Ansicht gibt die Nachricht an, dass es für die Aktualisierung auf dem Server in die Warteschlange gestellt wurde, aber ich bin mir nicht sicher, ob das mit dem programmatischen Aufruf geschieht. Es kann gut tun.
In meinem Szenario konsolidiere ich eine Menge Daten in einzelne Dokumente, so dass trotz intensiver Nutzung in regelmäßigen Abständen keine große Anzahl von Dokumenten gleichzeitig aktualisiert wird.
Ich führe auch das Update auf den Index über sessionAsSigner
, ich hatte angenommen, dass für Autorisierungszwecke benötigt würde.
Gut zu wissen. Ich denke, ich werde in Sicherheit sein. Ich werde nicht viele Dokumente gleichzeitig aktualisieren müssen - nur die eine. Außerdem bin ich mir ziemlich sicher, dass die Nutzung nicht so intensiv sein wird. Ich werde das Autoritätsproblem untersuchen müssen. Daher war das Testen mit Benutzern kein Problem, obwohl ich nicht den SessionAsSigner verwende. –
Haben Sie die Aktualisierungseinstellung für die darunter liegende Ansicht überprüft, die im Ansichtsfenster angezeigt wird? Es ist die "Mütze Hut" Registerkarte (5. Registerkarte). Wenn Sie es nach der ersten Verwendung auf "Automatisch" eingestellt haben, sollte das Aktualisieren eines Dokuments und das Durchführen einer Teilaktualisierung im Ansichtsfenster die Änderung widerspiegeln. Der Volltextindex hat nichts mit View-Indizes zu tun, sondern sind separate Arten von Indizes. – jpishko
Die Aktualisierungseinstellung der zugrunde liegenden Ansicht, die der Ansichtsbereich anzeigt, ist/war auf "Auto, nach der ersten Verwendung" eingestellt. Ich benutze jedoch nicht nur eine xpage. Die erste Seite ist das Ansichtsfenster und der Benutzer wählt den zu aktualisierenden Datensatz aus. Eine neue Seite wird geladen, um den Datensatz zu bearbeiten. Sobald die Änderungen über Javascript gesendet wurden, das über das onclick-Ereignis der Schaltfläche ausgeführt wurde, wird der Benutzer über eine einfache Aktion "Einfache Seite", die der einfachen Aktion "Skript ausführen" folgt, zur ersten Seite weitergeleitet. Also, technisch gesehen ist es ein vollständiger Seiten-Reload und der Inhalt des Viewpanels wurde nicht aktualisiert. –