Webgate Anywhere 4.0 - WebTML Tag-Referenz
query

<tml:query>

Beschreibung :

Der Query-Tag erhält einen Suchausdruck als Inhalt. Dadurch wird eine benutzerdefinierte Suche in einer Content-Datenbank ausgeführt welche eine Liste von Inhaltsdokumenten als Ergebnis zurückgibt, welche von weiteren WebTML-Tags ausgewertet werden kann. Die verwendete Content-Datenbank ist normalerweise die des aktuellen Kontextes, kann jedoch auch über das Attribut db bestimmt werden.

Suchausdrücke werden in unterschiedlichen Abfragesprachen definiert, deren Verfügbarkeit vom verwendeten Datenbanktypen abhängig ist. Die zu verwendende Abfragesprache wird per Attribut type angegeben. In der Abfragesprachen-Referenz werden die verfügbaren Abfragesprachen und ihre Syntaxen dokumentiert.

Normalerweise wird <tml:query> innerhalb eines Tags <tml:collection> verwendet, an welchen der tml:query-Tag sein Ergebnis automatisch weiterreicht. Pro tml:collection-Tag können mehrere tml:query-Tags angegeben werden.

Ein <tml:foreach> innerhalb dieses Collection-Tags kann die gefundenen Dokumente zur Ausgabe bringen (siehe Beispiel).

Wird der tml:query-Tag ausserhalb von <tml:collection> verwendet, so kann per Kontextausdruck "query:tagid" auf das erste Ergebnisdokument des tml:query-Tags zugegriffen werden. Diese Technik kann angewandt werden, wenn lediglich das erste Dokument von Interesse ist. Desweiteren kann der tml:query-Tag per Attribut return direkt ein Item des ersten Ergebnisdokumentes ausgeben ohne dass <tml:collection> involviert ist.
Abgeleitet von:
<tml:[Alle Tags]>
Attribute:
Vererbte WebTML-Attributes sind ausgeblendet -> Anzeigen
Name Wert(e) Verwendung
alllanguages true|false|t|f|0|1 Bestimmt, ob die Query nur nach Dokumenten der aktuellen Sprache sucht (bei "false"), oder nach Dokumenten aller Sprachen (bei "true").
cache true|false Weist WGA an, das Ergebnis einer Query solange zu Cachen und aus dem Cache wiederzuliefern, bis die zugrundeliegende Datenbank modifiziert wird.
db Datenbank-Key Die Datenbank(en) ,in welcher/welchen gesucht werden soll(en). Kann weggelassen werden, wenn in der aktuellen Datenbank gesucht wird.
highlight true | false Bei Lucene-Suchen zu verwenden, um das Ergebnis-Highlighting zu aktivieren
includecurrent true|false|t|f|1|0 Kontrolliert, ob das aktuell im Kontext befindliche Content-Dokument im Ergebnis der Abfrage enthalten sein darf.
max 0...n Bestimmt die maximale Anzahl der Dokumente, welche durch diese Abfrage zurückgeliefert werden sollen.
name Name der gespeicherten Abfrage Name einer gespeicherten Abfrage für diese Datenbank. Gespeicherte Abfragen werden in der Server-Konfiguration (wga.xml) festgelegt und können mit diesem Attribut verwendet werden. In diesem Fall werden als Inhalt des Query-Tags -Tags ausgewertet, welche Parameter für diese Abfrage beinhalten können. Gespeicherte Abfragen sind ein Weg um zu erzielen, dass: - Der WebTML-Designer keine Kenntniss von der Abfragesprache und der Struktur der Datenbank haben muss - Der WebTML-Designer nur vordefinierte Abfragen ausführen darf (wenn die Option "AllowCustomQueries" auf "false" gesetzt ist)
onlypublished true|false Bestimmt ob nur publizierte Dokumente in der Suche berücksichtigt werden sollen.
options Query-Optionen Angabe von Suchoptionen, welche das Suchergebnis modifizieren, als kommaseparierte Liste. Die verfügbaren Suchoptionen sind je Datenbankplattform unterschiedlich.
return Itemname Ist dieses Attribut angegeben und der Query-Tag konnte Ergebnis-Contents ermitteln, so gibt der Tag den Wert des angegebenen Items aus dem ersten gefundenen Content-Dokument zurück. Dies ist praktisch, wenn bei den Ergebnissen einer Abfrage nur ein einzelner Wert von Interesse ist (wie es oft bei SQL-Abfragen gegen JDBC-Datenbanken der Fall ist).
role none|nav|sitemap|search Ändert die "Rolle" der Abfrage. Abfragen ignorieren normalerweise Dokumente, die in Suchen versteckt sind. Durch das explizite Setzen der Rolle des Query--Tags kann dieses Verhalten jedoch verändert werden. Demensprechend können Suchen auch in Sitemaps oder Navigatoren ausgeblendete Dokumente ignorieren, bzw. dieses Verhalten bei "none" komplett unterbinden und alle Dokumente berücksichtigen.
type formula | fulltext | view | lucene ... Wählt die Abfragesprache, in welcher die Abfrage formuliert ist. Verschiedene Datenbanktypen unterstützen verschiedene Datenbanksprachen. Bei Typen mit nur einer verfügbaren Abfragesprache kann dieses Attribut ausgelassen werden.

Tag-Infos :
error: Enthält ein Java-Exception-Objekt, wenn in der Abfrage ein Fehler aufgetreten ist. Tritt keine Fehler auf ist diese Taginfo null. Hiermit kann eine Webseite auf eine fehlgeschlagene Abfrage reagieren, indem sie dieses Taginfo abfragt, z.B.:

<tml:case condition="taginfo('querytag', 'error') != null">

fullquery
: Die im Endeffekt ausgeführte Abfrage nach impliziten Additionen und Modifikationen,

unspecificquery: Diese Tag-Info ist nur beim Querytype "Lucene" verfügbar. Mögliche Werte sind "true" oder "false". Unspecificquery wird auf "true" gesetzt, wenn eine zu ungenaue Lucene-Abfrage durchgeführt worden ist. Z.B. sucht ein Benutzer nach allen Begriffen die mit "a" beginnen über die Abfrage "a*". Solche Abfrage sind sehr Rechenzeitaufwändig. Aus diesem Grund ist die maximale Anzahl an Kombinationen für einen Suchbegriff standardmäßig auf 1024 begrenzt. Eine Abfrage mit "a*" ist also nur dann möglich, wenn der Index nicht mehr als 1024 verschiedene Begriffe enthält, die mit "a" beginnen. Sollte es dennoch gewünscht sein, dass Benutzer sehr ungenaue Suchbegriffe verwenden können, ist je nach Indexgröße der Parameter für die maximale Anzahl an Kombinationen entsprechend zu erhöhen. Näheres hierzu entnehmen sie bitte dem Kapitel "Lucene Volltextindizierung" im Administrationshandbuch.

Beispiele:

Der normale Aufbau einer Abfrage mit einem tml:query-Tag innerhalb von <tml:collection>:

<tml:collection>

<tml:query id="adressen">

</tml:collection>

In diesem Beispiel wird <tml:query> ohne <tml:collection> verwendet. In einem folgenden tml:item-Tag wird ein Feld des ersten Ergebnisdokumentes der Abfrage ermittelt:

<tml:query id="bill" db="names" type="view">people;Bill Gates;True</tml:query>
<tml:item context="query:bill" name="phone"/>

Im folgenden Beispiel wird der tml:query-Tag dazu benutzt um lediglich ein Feld des ersten Ergebnisdokumentes auszugeben. Dazu wird das return-Attribut benutzt:

<tml:query return="Name">Select * from customers where nr = '1'</tml:query>


<< portlet alllanguages >>