Autor Thema: Wie automatisch Volltextindex für neu erstellte Datenbank erstellen  (Gelesen 1509 mal)

Offline DrNotes

  • Aktives Mitglied
  • ***
  • Beiträge: 183
  • Geschlecht: Männlich
Hallo Leute,

ich habe für unsere Projekte-Datenbanken eine Schablone programmiert
Pro Tag werden ca. 20 neue Projekte (Files) basierend auf dieser Schablone erstellt.

Ist es möglich, beim Erstellen einer solchen neuen Projekte-Datenbank automatisch die Volltextindizieurung einzuschalten, oder geht das ausschliesslich "manuell" über den Administrator.
Das würde dann nämlich heißen, ich kann jeden Tag nachschauen, welche neuen Datenbanken dazugekommen sind und müsste dann den Volltextindex erstellen.

Danke für Eure Hilfe.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Gerade unter R5 hast Du da keine Chance. Aber mal eine Frage: Wer legt denn diese DBs an ? So einfach "irgendwer" ? Der hätte doch dann auch die Verantwortung (und Verpflichtung), einen FTI anzulegen, wenn er ihn braucht.

Du müsstest das ganze (wenn Ihr denn das Anlegen neuer DBs "unzuverlässigen" Leuten anvertraut, die einen FTI brauchen, ihn aber ggf. nicht anlegen) automatisieren: In einer Master-DB eine Aktion zum Anlegen neuer DBs, die gewünschte DB dann am gewünschten Ort anlegen und nach der Anlage gleich den FTI erzeugen lassen. Dann wärst Du fein 'raus. Du könntest so sogar abklemmen, dass jedermann DBs anlegen kann (das kann ja dann der Server erledigen).

Bernhard

Offline DrNotes

  • Aktives Mitglied
  • ***
  • Beiträge: 183
  • Geschlecht: Männlich
Gerade unter R5 hast Du da keine Chance. Aber mal eine Frage: Wer legt denn diese DBs an ? So einfach "irgendwer" ? Der hätte doch dann auch die Verantwortung (und Verpflichtung), einen FTI anzulegen, wenn er ihn braucht.

Du müsstest das ganze (wenn Ihr denn das Anlegen neuer DBs "unzuverlässigen" Leuten anvertraut, die einen FTI brauchen, ihn aber ggf. nicht anlegen) automatisieren: In einer Master-DB eine Aktion zum Anlegen neuer DBs, die gewünschte DB dann am gewünschten Ort anlegen und nach der Anlage gleich den FTI erzeugen lassen. Dann wärst Du fein 'raus. Du könntest so sogar abklemmen, dass jedermann DBs anlegen kann (das kann ja dann der Server erledigen).

Bernhard

Ja, anlegen kann die Datenbank jeder bei uns - das ganz wird sich halt so reduzieren, dass es die Sekretärin der jeweiligen Abteilung macht.

Kann man das Erstellen des Volltextindex jetzt in LS ausprogrammieren (z.B. in der Schablone), oder wie würde das ausschauen.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Klar kann man das in LS machen. Vorschlag:
Im PostOpen
- checken, ob der aktuelle User die Rolle [Gott] hat
- checken, ob die DB auf dem Server geöffnet hat
- checken, ob die DB einen FTI hat, wenn nicht, einen neuen FTI erzeugen.

HTH,
Bernhard

Offline DrNotes

  • Aktives Mitglied
  • ***
  • Beiträge: 183
  • Geschlecht: Männlich
Klar kann man das in LS machen. Vorschlag:
Im PostOpen
- checken, ob der aktuelle User die Rolle [Gott] hat
- checken, ob die DB auf dem Server geöffnet hat
- checken, ob die DB einen FTI hat, wenn nicht, einen neuen FTI erzeugen.

HTH,
Bernhard


Hallo Bernhard,

sorry für mein Unverständnis, aber die "UpdateFTIndex method" funktioniert nur bei lokalen Datenbanken, nicht aber auf serverbasierenden.
Obige Voraussetzungen sind natürlich erfüllt.

Usage
Notes returns an error if you attempt to create a full-text index on a database that is not local.


Was mach ich jetzt?

Offline DrNotes

  • Aktives Mitglied
  • ***
  • Beiträge: 183
  • Geschlecht: Männlich
Klar kann man das in LS machen. Vorschlag:
Im PostOpen
- checken, ob der aktuelle User die Rolle [Gott] hat
- checken, ob die DB auf dem Server geöffnet hat
- checken, ob die DB einen FTI hat, wenn nicht, einen neuen FTI erzeugen.

HTH,
Bernhard

Hallo Bernhard,

sorry für mein Unverständnis, aber die "UpdateFTIndex method" funktioniert nur bei lokalen Datenbanken, nicht aber auf serverbasierenden.
Obige Voraussetzungen sind natürlich erfüllt.

Usage
Notes returns an error if you attempt to create a full-text index on a database that is not local.


Was mach ich jetzt?

Problem gelöst - für alle die's interessiert:

Erstelle einen Agenten: "CreateFullTextIndex"
Sub Initialize
'wird beim erstenmal starten der Datenbank in der Ansicht "Dokumente" (Default-Ansicht) gestartet bzw. wird der Index angelegt
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Set db = session.CurrentDatabase
   
   If Not ( db.IsFTIndexed ) Then
      Call db.UpdateFTIndex( True )
   End If
   
End Sub

In meiner Default-Ansicht der Datenbank steht folgender Code:
Sub Queryopen(Source As Notesuiview, Continue As Variant)
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
   
Dim agent As NotesAgent   
Dim status As Integer
Set agent = db.GetAgent("CreateFulltext-Index")
status = agent.RunOnServer()
'Messagebox("Status" & status)   
End Sub

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Hallo Tom,

sorry wegen des vergessenen Hinweises auf die Einschränkung, dass UpdateFTIndex nur lokal funktioniert. Ich habe da Dein Problem wirklich zu oberflächlich betrachtet bzw. beantwortet, und das wider besseren Wissens.

Ein Tip hätte ich noch: Zur Performance-Steigerung würde ich das
If Not ( db.IsFTIndexed ) Then
vom Agent in das Event verlegen, welches den Agent startet. Dort würde ich auch noch abfragen, ob die DB lokal oder serverbasierend ist (im ersteren Fall kann der FTI ja wirklich direkt angelegt werden).

Nochmals: Bitte entschuldige meine unvollständige Ansage.

Bernhard

Offline DrNotes

  • Aktives Mitglied
  • ***
  • Beiträge: 183
  • Geschlecht: Männlich
Hallo Tom,

sorry wegen des vergessenen Hinweises auf die Einschränkung, dass UpdateFTIndex nur lokal funktioniert. Ich habe da Dein Problem wirklich zu oberflächlich betrachtet bzw. beantwortet, und das wider besseren Wissens.

Ein Tip hätte ich noch: Zur Performance-Steigerung würde ich das
If Not ( db.IsFTIndexed ) Then
vom Agent in das Event verlegen, welches den Agent startet. Dort würde ich auch noch abfragen, ob die DB lokal oder serverbasierend ist (im ersteren Fall kann der FTI ja wirklich direkt angelegt werden).

Nochmals: Bitte entschuldige meine unvollständige Ansage.

Bernhard

Hallo Bernhard,

die "If Not ( db.IsFTIndexed ) Then" hatte ich schon in das Event verlagert - da hatten wir den gleichen Gedanken.

Danke nochmals....LG

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz