# bx:websearch

Dieses Tag ermöglicht die Darstellung von Suchergebnissen der Webseite. Die Suche ist über die Funktionen des Jakarta Lucene Projektes realisiert worden. Das Web muss vorher indiziert worden sein.
 Zum Ausklammern von Bereichen aus der Suche verwendet man [bx:scanner](/books/cms-handbuch-entwickler/page/bx-scanner)

*(ab Version 3.3.2)* Texte werden beim Indizieren und beim Suchen gleich zerlegt, und deutsche Wortformen werden zusammengeführt – die Suche nach „Straßen“ findet auch „Straße“. Bewertet wird nach BM25; die frühere Bewertung ist über den Action-Parameter `similarity-classic` weiter wählbar.

## Eingabefeld

```xml
<bx:websearch.input />
```

Es wird ein Text-Inputfeld erzeugt, welches in Suchformularen verwendet werden kann. Falls schon eine Suche stattgefunden hat, enthält das Feld den Suchtext.

## Hauptschleife

```xml
<bx:websearch [max="{n}"] [maxparam="{paramname}"] [indexparam="index"]> Inhalt </bx:websearch>
```

Dieses Tag bildet die Hauptschleife um die Suchergebnisse.
Zur Verwendung im Inhalt stehen die nun folgenden Tags bereit.

Bisher mußte der Blätterparameter „index“ heißen. Und bei den Containerfiltern (Teasern) in der Seite mußte man indexparam auf etwas anderes setzen. Nun kann der Parametername selbst definiert werden.
`<bx:websearch.previous|next|firstshown|lastshown>` lesen den neuen Parameter von der `<bx:websearch>`-Schleife und verlinken jetzt mit diesen Namen.

### max
maximale Anzahl an Ausgaben

### maxparam
Request-Parameter, der den Zahlenwert für den Überlauf enthält *(ab Version 2.5.9)*

### indexparam
Name des Blätterparameters

## websearch.title

```xml
<bx:websearch.title/>
```

gibt den Titel der Seite (`<title>` HTML-Tag) oder, falls dieser nicht existiert, "`<ohne Titel>`" aus

## websearch.rank

```xml
<bx:websearch.rank/>
```

Rangfolge des Ergebnisses, beginnend mit 1


## websearch.score

```xml
<bx:websearch.score/>
```

die Wertung des Suchergebnisses als Gleitkommazahl

*(ab Version 3.3.2)* In die Wertung fließt auch die Aktualität der Seite ein, sofern die Seite ein Datum ausgibt – siehe websearch.date weiter unten und den Action-Parameter `boost-date`.

## websearch.relevanz

```xml
<bx:websearch.relevanz/>
```

eine Wertung des Ergebnisses als Ganzzahl mit Prozentzeichen

## websearch.stars

```xml
<bx:websearch.stars [max="<n>"]> Inhalt </bx:websearch.stars>
```

Symbole als Relevanzanzeige ausgeben

### max
maximale Anzahl an Symbolen (Standard: 5)

Der Inhalt bestimmt das Symbol, er kann z.B. ein [bx:bild](http://wiki.batix.net/index.php/Bx:bild)-Tag enthalten

## websearch.link

```xml
<bx:websearch.link> Inhalt </bx:websearch.link>
<bx:websearch.link />
```

verlinkt den Inhalt mit der Fundstelle. Als geschlossenes Tag wird die URL verlinkt *(ab Version 2.5.9)*

## websearch.url

```xml
<bx:websearch.url/>
```

gibt die URL der Fundstelle an. *ab Version 2.5.8*

## websearch.path

```xml
<bx:websearch.path/>
```

gibt den Pfad zur Fundstelle an. Es handelt sich um die URL, deren Hostname abgeschnitten wurde. *ab Version 2.5.9*

## websearch.description

```xml
<bx:websearch.description/>
```

die Beschreibung des Dokuments (HTML `<meta>` Wert "description")

## websearch.date

```xml
<bx:websearch.date [format="dd.MM.yyyy"]/>
```

das Datum der gefundenen Seite *(ab Version 3.3.2)*

Das Datum stammt aus der Seite selbst, dort im Kopf angegeben als `<meta name="date" content="2026-08-13">`. Seiten ohne solche Angabe – typisch Übersichts- und Listenseiten – geben hier nichts aus. Dasselbe Datum steuert die Aufwertung neuerer Seiten im Suchergebnis (Action-Parameter `boost-date`, siehe [Suche im Web](/books/cms-handbuch-entwickler/page/suche-im-web)).

Gelesen werden, in dieser Reihenfolge:

- `<meta name="date">`
- `<meta property="article:published_time">` (OpenGraph, auch als `name=`)
- `<meta name="DC.date">` bzw. `dcterms.date` (Dublin Core)
- `<meta name="published">` (die bisher schon unterstützte Angabe)
- `<time datetime="…">` – das erste im Dokument

Als Datumsformat werden ISO-Angaben (`2026-08-13`, auch mit Uhrzeit und Zeitzone) sowie das deutsche Format (`13.08.2026`) verstanden. Eine unverständliche Angabe gilt als kein Datum.

### format
Datumsformat für die Ausgabe, z.B. `dd.MM.yyyy`. Ohne Angabe wird das mittlere deutsche Format verwendet (13.08.2026).

## websearch.navname

```xml
<bx:websearch.navname/>
```

der Name des entsprechenden Navigationspunktes

## websearch.navid

```xml
<bx:websearch.navid/>
```

die ID des entsprechenden Navigationspunktes

## websearch.previous

```xml
<bx:websearch.previous [hide] [url="{link}"] />
<bx:websearch.previous [hide] [url="{link}"]> Linktext </bx:websearch.previous>
```

(steht außerhalb der Schleife) einen Link zur vorigen Ergebnisseite generieren

### hide
es wird nichts ausgegeben wird, wenn es keine nächste Seite gibt

### url
Ziel-Dateiname festlegen (Standard ist die aktuelle Seite)

### Linktext
Ein Linktext kann als Tag-Inhalt angegeben werden (Standard: "weiter >>").

## websearch.next

```xml
<bx:websearch.next [hide] [url="{link}"] />
<bx:websearch.next [hide] [url="{link}"]> Linktext </bx:websearch.next>
```

(steht außerhalb der Schleife) einen Link zur nächsten Ergebnisseite generieren
**Parameter: siehe unter websearch.previous**

## websearch.totalhits

```xml
<bx:websearch.totalhits/>
```

(steht außerhalb der Schleife) Gesamtzahl der Ergebnisse

## websearch.firstshown

```xml
<bx:websearch.firstshown/>
```

(steht außerhalb der Schleife) Nummer des ersten Ergebnisses auf der Seite

## websearch.lastshown

```xml
<bx:websearch.lastshown/>
```

(steht außerhalb der Schleife) Nummer des letzten Ergebnisses auf der Seite

## websearch.query

```xml
<bx:websearch.query encode="typ"/>
```

(steht außerhalb der Schleife) der Begriff/Text, nach dem gesucht wurde

### encode
Hiermit kann der ausgegebene Text für verschiedene Formate kodiert werden:

- **html**
- **javascript**
- **sql** (zur Verwendung in SQL für Strings)
- **sql-like** (zur Verwendung in SQL mit LIKE)
- **sql-rlike** (zur Verwendung in SQL mit RLIKE und REGEXP)
- **url**
- **xml**

## websearch.if

```xml
<bx:websearch.if [not] [empty | scrollable | morethan="<n>" | lessthan="<n>"] > Inhalt </bx:websearch.if>
```

(steht außerhalb der Schleife) zeigt Inhalt nur unter bestimmten Bedingungen an. Nur, wenn Suche bereits stattgefunden hat:
(Falls keiner der vier Parameter angegeben wurde, erfolgt die Ausgabe nur, wenn bereits eine Suche erfolgt ist (oder auch nich, bei `not`). )

### empty
es wurden keine Suchergebnisse gefunden; darf auch innerhalb der Schleife verwendet werden. Um das Gegenteil abzufragen, wird `not` verwendet.

### scrollable
es sind mehr Seiten vorhanden (Anzahl Ergebnisse > `max`)

### morethan / lessthan
- **morethan:** es wurden mehr als `<n>` Ergebnisse gefunden
- **lessthan:** es wurden weniger als `<n>` Ergebnisse gefunden

## Eingabefeld

```xml
<bx:websearch.input />
```

Es wird ein Text-Inputfeld erzeugt, welches in Suchformularen verwendet werden kann. Falls schon eine Suche stattgefunden hat, enthält das Feld den Suchtext.

### Beispiele

```xml
<bx:tag.feature param="value" />
```

Weitere Beispiele unter [Snippets/Websuche](/books/cms-handbuch-entwickler/page/websuche).