Domino 9 und frühere Versionen > ND8: Entwicklung
Wie suche ich nach Dokumenten?
schroederk:
Hallo,
ich möchte über die COM-Schnittstelle nach Dokumenten in einem Kalender suchen.
Genauer gesagt, alle Einträge, die einen bestimmten Text im Body enthalten.
In einem Test-Script möchte ich mir einfach alle gefundenen Einträge anzeigen lassen:
Offenbar ist $entry aber leer, als ob nichts gefunden wurde?
Suche ich auf diese Art eigentlich richtig? Wird der komplette Kalendereintrag durchsucht oder ev. nur Titel?
(Im Beispiel sollte aber der Eintrag im Titel gefunden werden)
--- Code: ---$session = new COM( "Lotus.NotesSession" );
$session->Initialize('Passwort');
$db = $session->getDatabase( "11.11.11.11", "mail\testdatenbank.nsf", false );
$view = $db->getView( "Calendar" );
$keys = "Test-Eintrag";
$dc = $view->getAllEntriesByKey($keys,false);
$entry = $dc->GetFirstEntry();
while (is_object($entry)) {
$field = $doc->GetFirstItem( "Body" );
$body = $field->text;
echo "Body: $body<br/>";
$entry = $dc->getNextEntry($entry);
}
--- Ende Code ---
pram:
Schau dir mal im Designer in der LS-Hilfe die NotesView-Klasse an.
Was du hier machst
$dc = $view->getAllEntriesByKey($keys,false);
ist dass du in der Ansicht in der ERSTEN SORTIERTEN Spalte nach Werten welche mit "Testeintrag" beginnen. Du kannst damit nicht in beliebigen Feldern suchen
Schau dir mal die FTSearch von der Viewklasse an, damit müsste es gehen.
Oder auch die Search Methode in der Notesdatabase.
Gruß
Roland
koehlerbv:
Knud, auch von mir ein paar Tipps:
1. Wenn Du Chance hast: Setze das zunächst mit Notes-Bordmitteln um. Wenn Du dann richtigen den Algorithmus und das richtige Coding hast, fällt es Dir viel leichter, dass in eine andere Sprache umzusetzen.
2. Body ist RichText (in Memo, Appointment und Task). Dein Verfahren kann damit überhaupt nicht funktionieren, da ein RTI nur mittels FTI durchforstbar ist und RTIs in Ansichten überhaupt nicht dargestellt werden können.
3. Auch daher: Erst Algorithmus, dann Coding.
Für weitere Hilfe stehe sicherlich nicht nur ich gerne bereit.
Bernhard
schroederk:
Muss ich im FTSearch zu verwenden nicht vorraussetzen, dass ein FullText-Index existiert?
Oder wird in dem Fall dann Onthefly aufgebaut? Was der Performance sicher nicht soo gut tut.
Die Search-Methode werde ich mir mal anschauen.
Da ich was LotusScript betrifft leider absoluter Neuling bin, schien es mir leichter zu sein, die Kommandos gleich in PHP zu übertragen, als mich mit Agenten, LotusScript-Befehlen, deren Syntax, der Ausgabe von Werten und dem Debugging zu beschäftigen.
Daher habe ich mich daran noch nicht rangetraut.
Bisher laufe ich die gesamte DB durch und untersuche jeden Eintrag. Was immernoch erstaunlich performant ist, aber dennoch nicht auf Dauer praktikabel.
Zumal ich davon ausging, dass die Notwendigkeit des Einträge wiederfinden eher die Ausnahme darstellen sollte. Dem ist leider nicht so.
pram:
Aus der Hilfe ;D
Usage
If the database is not full text indexed, this method works, but less efficiently. To test for an index, use the IsFTIndexed property. To create an index on a local database, use the UpdateFTIndex method.
Wobei ich mich dunkel erinnere, dass ab einer bestimmten Anzahl von Dokumenten die FTsearch Methode gleich mit einer Meldung aussteigt, dass es zu viele Dokumente sind und kein Index vorhanden ist.
Gruß
Roland
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln