So setzen Sie Filter in den Suchergebnissen ein

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.

Ergebnisse auf Verzeichnis Bereich einschränken

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").

Volltextsuche - Strukturelement Suchergebnis mit Einstellungsmöglichkeiten
Volltextsuche - Strukturelement Suchergebnis mit Einstellungsmöglichkeiten

Listen-Filter über Standard Listenoptionen nutzen

Mit aktuellem Volltextsuche Weblic® bietet die Maske bereits im Standard die Möglichkeit, Filter hinzuzufügen (siehe auch Weblics® Portal "Volltextsuche").

Listen-Filter über Maske nutzen

Volltextsuche - Strukturelement Suchergebnis mit Filter auf Pfade
Volltextsuche - Strukturelement Suchergebnis mit Filter auf Pfade

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.

Allgemein

Volltextsuche - Strukturelement Suchergebnis - Allgemein
Volltextsuche - Strukturelement Suchergebnis - Allgemein

Im Register "Allgemein" finden sich die allgemeinen Einstellungen zu Suche.

Suchfilter für Besucher

Volltextsuche - Strukturelement Suchergebnis - Suchfilter
Volltextsuche - Strukturelement Suchergebnis - Suchfilter

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:

  • \.pdf$
    Es werden nur Suchergebnisse angezeigt, welche im Dateipfad auf die Dateiendung .pdf enden.
  • \.(pdf|doc)$
    Es werden nur Suchergebnisse angezeigt, welche im Dateipfad auf die Dateiendung .pdf oder .doc enden.
  • ^/wDeutsch/aktuelles/meldungen/
    Es werden nur Suchergebnisse angezeigt, welche im Dateipfad mit /wDeutsch/aktuelles/meldungen/ beginnen.
  • ([\?&]source=web|/wDeutsch/web/)
    Es werden nur Suchergebnisse angezeigt, welche zum Pfad den entsprechenden URL-Parameter angehängt haben oder im Dateipfad /wDeutsch/web/ enthalten.

Sortierungen für Besucher

Volltextsuche - Strukturelement Suchergebnis - Sortierung
Volltextsuche - Strukturelement Suchergebnis - Sortierung

Im Register "Sortierungen für Besucher" finden sich ab CMS-Version 18 die Einstellungsmöglichkeiten zu diversen Sortierungsfilter.

Links zu häufig gesuchten Seiten

Volltextsuche - Strukturelement Suchergebnis - Häufig gesucht
Volltextsuche - Strukturelement Suchergebnis - Häufig gesucht

Im Register "Links zu häufig gesuchten Seiten" finden sich die Einstellungsmöglichkeiten zu häufig gesuchten Seiten.

Listen-Filter über Template manuell setzen

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).

Beispiel: Auszug aus der search.standard.wItem.php

...
<wsl:php>
...
  $listParameters['filterset'] = array('type' =&gt; 'and');
...
  <xsl:if test="php:functionString('wRequest::getParameter', 'searchoptions') = 'onlyoffice'">
    $filterFiletypes = array('type' =&gt; 'or');
                     
    $filterFiletypes[] = array("wPath" =&gt; "/wd:stat/@extension", "operator" =&gt; "containsi", "condition" =&gt; "pdf");
    $filterFiletypes[] = array("wPath" =&gt; "/wd:stat/@extension", "operator" =&gt; "containsi", "condition" =&gt; "doc");
    $filterFiletypes[] = array("wPath" =&gt; "/wd:stat/@extension", "operator" =&gt; "containsi", "condition" =&gt; "xls");

    $listParameters['filterset'][] = $filterFiletypes;
  </xsl:if>
  <xsl:if test="php:functionString('wRequest::getParameter', 'searchoptions') = 'de'">
    $filterFiletypes = array('type' =&gt; 'or'); 
                     
    $filterFiletypes[] = array("wPath" =&gt; "/wd:stat/@path", "operator" =&gt; "containsi", "condition" =&gt; "/de/");

    $listParameters['filterset'][] = $filterFiletypes;
  </xsl:if>
  
  <xsl:if test="php:functionString('wRequest::getParameter', 'searchoptions') = 'en'">
    $filterFiletypes = array('type' =&gt; 'or'); 
                     
    $filterFiletypes[] = array("wPath" =&gt; "/wd:stat/@path", "operator" =&gt; "containsi", "condition" =&gt; "/en/");

    $listParameters['filterset'][] = $filterFiletypes;
  </xsl:if>
...
  
  print wList::createList($template, $listParameters);
...
</wsl:php>

Beispiel: Auszug aus der search.wFilelist.php (Suche Zeilentemplate)

...
<!-- 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()) &gt; 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