Domino 9 und frühere Versionen > Entwicklung
Web-Volltextsuche über Agent
scipio:
Hallo,
bisher hat die Standard-Volltextsuche in unseren Projekten ausgereicht. Wie haben in einer statischen HTML-Seite folgenden Code eingesetzt
--- Code: ---<form method="POST" action="/Pfad/datenbank.nsf/test?SearchView">
<input name="Query" size="45" value="">
<input type="submit" value = "Suchen">
</form>
--- Ende Code ---
und die Ausgabe über '$$SearchTemplate for ...' an den Internetauftritt angepasst.
Nun soll aber in der Suchmaske nicht nur ein Eingabefeld auftauchen, sondern zudem noch ein paar Checkboxen (zur Artikelauswahl) etc.
Neben der Möglichkeit, eine eigene Suchmaske zu erstellen, die QUERY über eine Formel berechnet (Query:=Feld1+Feld2+Feld3), gibt es sicherlich noch andere Lösungsansätze.
Man könnte den obigen Code um ein JavaScript erweitern, das die Felder (wenn gefüllt) aneinandersetzt
--- Code: ---window.location.href ='/pfad/datenbank.nsf/test?SearchView'+document.search.Feld1.value etc.
--- Ende Code ---
Nur, was wenn der User JavaScript deaktiviert hat?
Also hab' ich mal über eine Agentenlösung nachgedacht. Die action ruft einen Agenten auf, der fängt die Umgebung ein (Set doc=session.documentcontext), dröselt die Parameter auf, erzeugt daraus ein Query und erzeugt die Suchabfrage.
Ich hatte mal eine Beispieldatenbank auf meinem Rechner, da war so was umgesetzt. Da aber alleine die dazugehörige Script-Bibliothek ca. 5.000 Zeilen Code beinhaltete, habe ich die gelöscht.
Hat jemand schon mal so etwas mit einem "einfach nachzuvollziehenden" Agenten gelöst? Ich sitze hier nämlich mit vielen Brettern vorm Kopf und überlege, wie der Agent, der den Parameter Query erzeugt hat, das gleiche anzeigt wie die URL
--- Code: ---http://pfad/datenbank.nsf/test?SearchView&Query=VariableXYZ
--- Ende Code ---
.
Vielleicht sollte ich auch einfach noch mal drüber schlafen.
diali:
5.000 Zeilen?
Kann es Dir aus rechtlichen Gründen nicht zur Verfügung stellen, aber ich habe für unser Intranet eine Suche geschrieben (166 Zeilen inkl. Komentare und Leerzeilen). Dabei ist die Suche Konfigurierbar und durchsucht mehrere DBs, allerdings ist diese nur einsprachig.
So bin ich vorgegangen:
In der Suchmaske baust Du Dir ein Feld "Saveoptions" ein mit dem Wert "0", damit wird das Dokument nicht gespeichert. In einem Feld "Query" baust Du mit @Funktionen die Suchformel für den FTSearch zusammen und im WebQuerySave startest Du eine Script-Agent.
Im Script-Agent kommst Du mit "Set doc = NotesSession.DocumentContext" an das offene Dokument (Suchmaske) heran und hast damit alle Felder im Dokument im Zugriff.
Dann DB- und View-Objekt zuweisen und mit db.FTSearch(...) oder view.FTSearch(...) suchen, da wir Anwendungen von externen Entwicklern im Hause haben, die Dokument über Ansichten anstelle über Leser-Felder verbergen, verwende ich den view.FTSearch(..)
Mit Print kannst Du HTML-Code an den Browser zurückschreiben. Damit stehen Dir alle Wege offen (CSS, Darstellung usw.)
scipio:
--- Zitat von: diali am 15.03.05 - 07:34:16 ---Mit Print kannst Du HTML-Code an den Browser zurückschreiben.
--- Ende Zitat ---
Danke, das war der richtige Hinweis. Print! Wie war das noch mal mit dem Wald und den Bäumen und so ;D
Gelöst habe ich es momentan über JavaScript, da mir für den neuen Weg die Zeit fehlt.
Der Agent war deshalb so umfangreich, weil er die Suchergebnisse u.a. in bestehende (Notes)Web-Dokumente retrieven konnte. Der Agent benötigt(e) keine Notes-Such-Maske, sondern ein reines HTML-Formular. Durchsucht wurden alle Datenbanken, die im Profil angegeben waren. War in Sachen Script ein Hammerteil und so übersichtlich wie ein Ameisenhaufen.
scipio:
OFFTOPIC:
Konnte man nicht mal eigene Threads als erledigt markieren?
Semeaphoros:
Schaust Du in den Forumsregeln unter Punkt 3.5 für eine Notlösung, bis es den Button wieder gibt.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln