Veröffentlichungsdatum: 01. Juli 2015
Änderungsdatum: 07. März 2024
suche volltextsuche search suchergebnis filter
Dieser Artikel beschreibt, wie Sie Suchergebnisse über bestimmte Filter laufen lassen, damit aus dem erstellten Suchindex nur die gewünschten Bereiche angezeigt werden.
Die BASE nutzt zum Modul Volltextsuche hinsichtlich der Suchergebnisse die Ausgabe über die Weblication® Listenfunktion. Somit sind Sie sehr flexibel, was die Manipulation der Suchergebnisse angeht. Ein Suchindex lässt sich auf diese Weise in unterschiedlicher Form über die Suchergebnisliste ausgeben. So können Sie von den indizierten Dateien z.B. nur die aus einem bestimmten Bereich (Sprachbereich, Dokumente, etc.) oder nur Binärdokumente ausgeben.
Das Strukturelement für die Volltextsuche ("Volltextsuche Ergebnis mit Suchfeld") liefert Ihnen bereits im Standard die Möglichkeit, nur Ergebnisse aus dem festgelegten Bereich anzuzeigen ("Nur Ergebnisse aus folgendem Bereich anzeigen").
Mit aktuellem Volltextsuche Weblic® bietet die Maske bereits im Standard die Möglichkeit, Filter hinzuzufügen (siehe auch Weblics® Portal "Volltextsuche").
Mit dem BASE (Mobile First) Weblic® Volltextsuche ab CMS-Version 16 liefert das Strukturelement "Volltextsuche Ergebnis mit Suchfeld" bereits im Standard eine Filteroption nach Pfaden. Diese ermöglicht ein Bereitstellen diverser Auswahlboxen zum Suchfeld, welches die Seitenbesucher zum weiteren Filtern und somit einschränken der Suchergebnisse heranziehen kann. Ab CMS-Version 17 wurden die Einstellungsmöglichkeiten auf Register aufgeteilt.
Ab CMS-Version 17 steht zusätzlich eine "Häufig gesucht" Funktion zur Verfügung. Die Suche-Maske wurde daher auf Register aufgeteilt.
Im Register "Allgemein" finden sich die allgemeinen Einstellungen zu Suche.
Im Register "Suchfilter für Besucher" finden sich die Einstellungsmöglichkeiten zu diversen Suchfiltern für Besucher.
So lassen sich die Ergebnisse auf bestimmte Dokumenten-Typen, Dateiendungen, Pfade etc. filtern und auch eine Kategoriendatei auswählen, welche für das Filtern der Suchergebnisse herangezogen werden kann.
Die Auswahlbox kann per Checkbox aktiviert werden und für die Auswahlbox können die Filterwerte individuell angegeben werden. Als Wert pro Filter sind reguläre Ausdrücke möglich, womit man sehr flexibel auf unterschiedlichste Pfadangaben filtern kann.
Beispiele:
Im Register "Sortierungen für Besucher" finden sich ab CMS-Version 18 die Einstellungsmöglichkeiten zu diversen Sortierungsfilter.
Im Register "Links zu häufig gesuchten Seiten" finden sich die Einstellungsmöglichkeiten zu häufig gesuchten Seiten.
Nachfolgend ein Beispiel, um vom Suchindex nur diverse Binärdokumente (z.B. doc, pdf, xls) über die Suchergebnisse auszugeben. Setzen Sie hierzu über das Suche-Item einen Filter, der auf die Dateiendung der gefundenen Dateien prüft. Wenn Sie dies noch zusätzlich mit einer Abfrage versehen, welche den Filter nur anwendet, wenn ein bestimmter GET-Parameter im Aufruf gesetzt ist (z.B. searchoptions=onlyoffice), können Sie über ein Element verschiedene Suchausgaben ermöglichen.
Das Beispiel zeigt z.B. weiterhin an, wie Sie die Suchergebnisse sprachabhängig filtern.
Der Filter wird auch bei der Anzeige der "Anzahl der Treffer" berücksichtigt, indem Sie dies im Zeilentemplate der Suche über data[@name='numberFiles'] auslesen (siehe unten).
... <wsl:php> ... $listParameters['filterset'] = array('type' => 'and'); ... <xsl:if test="php:functionString('wRequest::getParameter', 'searchoptions') = 'onlyoffice'"> $filterFiletypes = array('type' => 'or'); $filterFiletypes[] = array("wPath" => "/wd:stat/@extension", "operator" => "containsi", "condition" => "pdf"); $filterFiletypes[] = array("wPath" => "/wd:stat/@extension", "operator" => "containsi", "condition" => "doc"); $filterFiletypes[] = array("wPath" => "/wd:stat/@extension", "operator" => "containsi", "condition" => "xls"); $listParameters['filterset'][] = $filterFiletypes; </xsl:if> <xsl:if test="php:functionString('wRequest::getParameter', 'searchoptions') = 'de'"> $filterFiletypes = array('type' => 'or'); $filterFiletypes[] = array("wPath" => "/wd:stat/@path", "operator" => "containsi", "condition" => "/de/"); $listParameters['filterset'][] = $filterFiletypes; </xsl:if> <xsl:if test="php:functionString('wRequest::getParameter', 'searchoptions') = 'en'"> $filterFiletypes = array('type' => 'or'); $filterFiletypes[] = array("wPath" => "/wd:stat/@path", "operator" => "containsi", "condition" => "/en/"); $listParameters['filterset'][] = $filterFiletypes; </xsl:if> ... print wList::createList($template, $listParameters); ... </wsl:php>
... <!-- Suchmaske --> <form name="frmSearchInner" method="get" action=""> <div> <label for="searchTerm" class="invisible"><xsl:value-of select="php:functionString('wTexts::getText', 'search_term')"/></label> <input type="text" name="searchTerm" value="{//data[@name='term']/text()}" style="margin-right:5px"/> <select name="searchoptions"> <option value="all">Alle Ergebnisse</option> <option value="onlyoffice">Nur DOC/PDF/XLS</option> <option value="de">Deutschsprachige Ergebnisse</option> <option value="en">Englischsprachige Ergebnisse</option> </select> <button type="submit" style="margin-right:5px;"><xsl:value-of select="php:functionString('wTexts::getText', 'search_execute_search')"/></button> </div> </form> ... <xsl:choose> <!-- Falls Ergebnisse gefunden wurden --> <xsl:when test="number(//data[@name='numberResultsSearch']/text()) > 0"> <p> <xsl:value-of select="php:functionString('wTexts::getText', 'search_number_results')"/>: <xsl:value-of select="//data[@name='numberFiles']/text()"/> </p> </xsl:when> <!--Falls keine Ergebnisse gefunden wurden--> <xsl:otherwise> ...
Nach Abschicken des Suchbegriffes über das Sucheformular kann eine aufgerufene URL dann z.B. wie folgt aussehen (Übergabe der GET-Parameter):
http://domain.dd/IhrProjekt/suche/index.php?searchTerm=weblication&searchoptions=en