Autor Thema: Web-Volltextsuche über Agent  (Gelesen 1702 mal)

Offline scipio

  • Junior Mitglied
  • **
  • Beiträge: 57
  • Ich liebe dieses Forum!
Web-Volltextsuche über Agent
« am: 11.03.05 - 14:13:06 »
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>

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.

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
.

Vielleicht sollte ich auch einfach noch mal drüber schlafen.
« Letzte Änderung: 16.03.05 - 08:53:06 von scipio »

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Web-Volltextsuche über Agent
« Antwort #1 am: 15.03.05 - 07:34:16 »
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.)
« Letzte Änderung: 15.03.05 - 07:40:22 von diali »
Gruß
Dirk

Offline scipio

  • Junior Mitglied
  • **
  • Beiträge: 57
  • Ich liebe dieses Forum!
Re: Web-Volltextsuche über Agent
« Antwort #2 am: 16.03.05 - 08:42:27 »
Mit Print kannst Du HTML-Code an den Browser zurückschreiben.

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.
« Letzte Änderung: 16.03.05 - 08:46:19 von scipio »

Offline scipio

  • Junior Mitglied
  • **
  • Beiträge: 57
  • Ich liebe dieses Forum!
Re: Web-Volltextsuche über Agent
« Antwort #3 am: 16.03.05 - 08:43:21 »
OFFTOPIC:

Konnte man nicht mal eigene Threads als erledigt markieren?

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Web-Volltextsuche über Agent
« Antwort #4 am: 16.03.05 - 08:46:39 »
Schaust Du in den Forumsregeln unter Punkt 3.5 für eine Notlösung, bis es den Button wieder gibt.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline scipio

  • Junior Mitglied
  • **
  • Beiträge: 57
  • Ich liebe dieses Forum!
Re: Web-Volltextsuche über Agent
« Antwort #5 am: 16.03.05 - 08:52:48 »
Schaust Du in den Forumsregeln unter Punkt 3.5 für eine Notlösung, bis es den Button wieder gibt.

Man sollte ab und zu auch mal die Regeln lesen ;-)

Offline scipio

  • Junior Mitglied
  • **
  • Beiträge: 57
  • Ich liebe dieses Forum!
Re: Web-Volltextsuche über Agent
« Antwort #6 am: 16.03.05 - 08:59:55 »
Ach ja, meine improvisierte JS-Lösung:

Formular-Header:
Code
<form action="javascript:siteSearch()" method="post" name="searchform" target="_self">

Darin die Felder bzw. Dialoglisten 'Postleitzahl', 'Ort', 'Angebotsform'.

JS

Code
<script language="JavaScript" type="text/javascript">
<!--
function siteSearch(){

var plz;
var sForm;
var ort;
var query;

plz = document.searchform.Postleitzahl.value
sForm = document.searchform.Angebotsform.value;
ort = document.searchform.Ort.value;

if (plz == "") plz = "1";
if (sForm == "") sForm = "1";
if (ort == "") ort = "1";
query = '*'+plz + '*' + '%20AND%20' + '*' + sForm + '*' + '%20AND%20' + '*' + ort +'*';

window.location.href ='/pfad/pfad/testdb.nsf/test?SearchView&query=' + query;

}
// -->
</script>

Leere Felder habe ich mit dem Wert '1' abgefangen, da dieser auf jeden Fall in der Postleitzahl vorkommt.
« Letzte Änderung: 16.03.05 - 09:01:51 von scipio »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz