Übersicht über die Suche
The searchsyntax for users can be found at syntax
Einführung
egal welche suche ausgeführt wird (simple,erweitert,complex) - im endeffekt wird daraus von der templateengine ein suchstring gebastelt, der an die searchengine geschickt wird. Für die searchengine machts keinen unterschied, ob simple, erweitert oder complex.
- simplesearch : ein kleiner slot, der die eingegeben begriffe im jeweiligen modul sucht und der alles kann was auch die erweiterte suche kann nur ist der slot kleiner.
- erweiterte suche: der grosse slot, in dem man alle register der searchengine ziehen kann (zB pete*:ZA:A sucht nach pete* im feld autor der zeitschriftenartikeldatenbank - siehe Feldnamenkürzel)
- complexsearch: das formular wo man sich den suchstring halt mittels formular zusammenstellen kann.
wenn nach Studium dieser Seite noch weitere Fragen offen bleiben, bitte auch folgende Seiten zum Thema Suche berücksichtigen:
- Die allgemeine Such Funktionen (für template-programmer)
- Die complex_search Funktionen (für template-programmer)
- interne Complex-Search-API (primär für engine-programmer)
- Doku für die Searchengine (primär für programmer der search-engine und administratoren zur indexerstellung)
Rückgabe der Suchfunktionen
Die Rückgabewerte sind genau dokumentiert unter search1().
Egal welche Funktion für die Suche verwendet wird. Die Struktur der Rückgabwerte ist immer die gleiche.
Es werden folgende Parameter retourniert:
- Parameter der Suche selbst (Suchterm, timinganalysen, Fehler ...)
- Übersicht der Ergebnisse : Liste alle Module mit Treffern, Liste aller Datenbanken pro Module mit Treffern und jeweils die Anzahl der Treffer
- Übersicht der Treffer : Für jene Datenbanken (CONFIGS) für welche in den suchparametern auch Treffer angefordert wurden (showme im addon-value) werden tatsächlich Treffer retourniert. Pro Treffer werden dabei die drei vordefinierte Felder für die Anzeige der Trefferliste (siehe auch pre_fields als parameter von -> search1()) und die url des Trefferdatensatzes für die Vollanzeige retourniert. Es werden dabei nur die Treffer der aktuellen Ergebnisseite retourniert, die über die parameter page,limit, offset von -> search1() angefordert wurden.
- Pagination/Ergebnisseiten. Zusatzwerte für die Verwaltung der Seiten der Trefferlisten.
search1() für simple und erweitert
die suchfunktion selbst heisst search1 und nimmt einen fertigen suchterm (peter, peter:ZA, peter:L:A usw.) und kommt bei simple und erweitert zum einsatz und ist dokumentiert. ein funktionales demo ist online unter http://www.adulteducation.at/de/peter/search
Das Ergebnis der Suchfunktion search1() ist genau dokumentiert unter search1
complex-search
für jede complexsearch gibts eine eigene funktion search_??_complex() die folgende parameter hat:
name ... wie in search1 term ... wie in search1 addon ... wie in search1
aber !!! der term ist nicht immer relevant !!! sobald paramater aus einem complex-search-formular vorhanden sind (cgi-parameter namens complex0, complex1 etc.) wird term ignoriert und aus diesen cgi-params der korrekte suchterm gebastelt und die suche durchgeführt und das ergebnis ist wie bei search1, allerdings mit zwei zusatz-werten (einfach im debug-dump anschauen)
- term_short ... eine vereinfachte zusammenfassung des suchterm für die präsentation des ergebnisses einer complex-search
- term_ext ... eine codierung, des suchterms, die auch die cgi-namen miteinbezieht und so erlaubt, aus einem codierten suchterm wieder die felder zu füllen. das macht die funktion get_sticky (dort sind auch Beschränkungen der Länge der Feldkürzel in term_ext dokumentiert)
die exakte version des suchterms, die dann auch bei einem wechsel von complexsearch zu erweiterte suche übergeben wird, ist ohnehin als standardrückgabewert von search1() und somit auch von search_??_complex() vorhanden.
Beispiel1
http://www.adulteducation.at/de/open-3/literatur/#complexsearch
suchbegriff gebe ich für autor “vater” ein und erhalte ein ergebnis. dann clicke ich auf “zeitschriftenartikel (20)” (ein reiner LINK !!!) und komme zu dem link:
http://www.adulteducation.at/de/open-3/literatur/suchergebnis/((('0-A-i-vater'%3A%3AA)))%3AL%20'99--and-'/za/1/#suchergebnis
dieser link verwendet term_ext und somit kann das complex-search-formular schon wieder ausgefüllt werden, ohne dass ein form übertragen wurde. Sinn ist, dass wir alle suchen verlinkbar machen und eben auch Suchergebnisse. Detailansichten von Suchergebnissen werden als Link und nicht als Formular übergeben. Darum dieser codierte suchterm term_ext
Beispiel2
im obigen beispiel gleich weiter clicke ich unter dem formular auf erweiterte suche (ebenfalls nur ein link) und komme zu:
http://www.adulteducation.at/de/erweitertesuche/suchergebnis/((((vater%3A-ZA%3AA%20or%20vater%3A-ZT%3AHG%20or%20vater%3A-UF%3AA))))%3AL/
und damit ist in der erweiterten suche der suchterm auch schon vorausgefüllt !! (ich hab mir die klammernoptimierung gespart ;)
Benennung der Felder in der Complexsearch
wichtig ist noch die benamsung der felder in der complexsearch
complex0 = feldname complex1=operator complex2=suchterm complex3 = feldname complex4=operator cmplex5=suchterm usw.
complex99 ist der logische operator
die kürzel der operatoren:
i .. is n .. is not g .. greater k .. smaller a .. greater or equal b .. smaller or equal
die kürzel der feldnamen findet man unter short



