Domino 9 und frühere Versionen > ND8: Entwicklung

Fulltext Eigenschaften

(1/1)

der busse:
Moin,

ich würde gerne die Fulltexteigenschaften von Datenbanken auslesen.
Evtl. wird demnächst der Index auf eine eigene Platte verschoben (sollte ja beim updall -f eigentlich nichts passieren) und zwischen Servern wäre das mal abzugleichen.
Insofern würde so eine Funkion für mich ganz praktisch sein, um mal "ganz sicher" zu sein, daß alles ok ist.

Per LS komme ich da aber nur an ISFTIndexed, FTIndexFrequency und LastFTIndexed...
Mich würden aber auch die Sachen interessieren, die beim CreateFTIndex definiert werden (case-sesitive, attachments, mit ohne Filter, encrypted)...

Findet sich das tatsächlich nur in den Eigenschaften der DB und dort unter dem Volltext-Reiter?
Lässt sich nicht anders auslesen? Auf der IBM Seite zum Layout auf der Dateiebene habe ich auch nichts Interssantes gefunden.

Ich hätte irgendwie wenig Lust, mich durch die Admin-Oberfläche zu klicken...ausschließen.

Gruß
der busse

jBubbleBoy:
Damit sollte es gehen:

--- Code: ---Type BlockID
hPool As Long
Block As Integer
End Type

Type FTINDEX 'Type used to pass the options to set in the index
      Indexed As Integer 'Create index true / false
      IndexAttachments As Integer 'Index attachments true / false
      IndexAttachmentsFormat As Integer 'Index format true = raw text only, false = binary
      EncryptedFields As Integer 'index encrypted fields true / false
      IndexBreaks As Integer 'index sentence and paragraph breaks true /false
      CaseSensitive As Integer 'case sensitive index true / false
      UpdateFrequency As Integer 'update frequency : 0 = Daily | 1 = Scheduled | 2 = Hourly | 3 = Immediate
      LastIndexedOn As String 'last index date/time
End Type

Public Type TIMEDATE
innards (1) As Long
End Type

Declare Function NSFDbOpen Lib "NNOTES" Alias "NSFDbOpen" ( ByVal P As String, hDB As Long) As Integer
Declare Function NSFDbClose Lib "NNOTES" Alias "NSFDbClose" ( ByVal hDB As Long) As Integer
Declare Function NSFDbGetExtendedInfo Lib "nnotes.dll" Alias "NSFDbGetExtendedInfo" _
(ByVal hDB As Long, hB As BLOCKID) As Integer
Declare Function FTGetLastIndexTime Lib "nnotes.dll" Alias "FTGetLastIndexTime" _
(ByVal hDB As Long, T As TIMEDATE) As Integer
Declare Function ConvertTIMEDATEToText Lib "nnotes.dll" Alias "ConvertTIMEDATEToText" _
(ByVal zI As Long, ByVal zT As Long, T As TIMEDATE, ByVal S As String, ByVal nS As Integer, _
nT As Integer) As Integer
Declare Function OSLoadString Lib "nnotes.dll" (ByVal hModule As Long, ByVal StringCode As Long, _
ByVal retBuffer As String, ByVal BufferLength As Integer) As Integer
Declare  Function OSPathNetConstruct Lib "NNOTES" Alias "OSPathNetConstruct" ( ByVal NullPort As Long, _
ByVal Server As String, ByVal FIle As String, ByVal PathNet As String) As Integer
Declare  Function OSLockObject Lib "NNOTES" Alias "OSLockObject" (  ByVal H As Long) As Long
Declare  Sub Peek Lib "MSVCRT" Alias "memcpy" (  D As Any, ByVal P As Long, ByVal N As Long)
Declare  Sub OSUnlockObject Lib "NNOTES" Alias "OSUnlockObject" (  ByVal H As Long)

Function GetFTIndexInfo(Server As String, FilePath As String, Index As FTINDEX) As Integer

Dim FullPath$, strError$, LastIndexedOn$, hDB&, p&, idx%, opt%, frq%, rc%,l%
Dim hB As BLOCKID

FullPath = Space(1024)
rc = OSPathNetConstruct (0, Server, FilePath, FullPath)

NSFDbOpen FullPath, hDB
If hDB = 0 Then Exit Function

rc = NSFDbGetExtendedInfo (hDB, hB)
If rc And ERR_MASK = 0 Then
strError = String(255, " ")
Call OSLoadString(0, rc, strError, 255)
Print "Fehler bei FT-Index Daten lesen" & "L: " & strError, 0, DLGTITLE
GetFTIndexInfo = False
Exit Function
End If

If hB.hPool = 0 Then
NSFDbClose hDB
Exit Function
Else
p& = OSLockObject(hB.hPool) + hB.Block
Peek idx, p& + 2, 2
Peek opt, p& + 6, 2
Peek frq, p& + 8, 2
OSUnlockObject hB.hPool
End If

Dim T As TimeDate
FTGetLastIndexTime hDB, T
If Not T.Innards(0) = 0 Then
LastIndexedOn = Space(256)
ConvertTIMEDATEToText 0, 0, T, LastIndexedOn, 256, L
LastIndexedOn = Left$(LastIndexedOn, L)
End If

NSFDbClose hDB

If idx% = 0 Then  Index.Indexed="0" Else  Index.Indexed="1" :  Index.LastIndexedOn = LastIndexedOn
If (opt% And &H20) Then Index.IndexAttachments="1"  Else Index.IndexAttachments="0"     
If (opt% And &H80) Then  Index.IndexAttachmentsFormat="1" Else  Index.IndexAttachmentsFormat="0"
If (opt% And &H40) Then  Index.EncryptedFields="1" Else Index.EncryptedFields="0"     
If (opt% And &H10) Then Index.IndexBreaks="1" Else Index.IndexBreaks="0"     
If (opt% And &H02) Then Index.CaseSensitive="1"  Else  Index.CaseSensitive="0"

Index.UpdateFrequency=CStr(frq%)
End Function

--- Ende Code ---

eknori (retired):
Oder damit

http://www-10.lotus.com/ldd/nd85forum.nsf/DateAllFlatWeb/17a296fa8b721b2285257a4d002ea90e?OpenDocument

der busse:
@jBubbleBoy:  Fantastisch... Habe hier im Forum scheinbar nicht das richtige gesucht, habe das Skript hier jetzt auch gefunden.
Funktioniert wie erhofft -- zumindest die 10-20 Stichproben, die ich gemacht habe. Ich habe jetzte meine kleine CSV, die ich dann in Excel öffnen kann...
@eknori: Da hatte ich weiter unten gelesen, daß es nicht geht... und es dann auch nicht getestet.

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln