Die Suche mit dem Search Server aktivieren

Die hier beschriebenen Features des Search Engine Servers (SES) beziehen sich auf den Rails Connector für CMS Fiona bis Version 6.9.1. Wenn Sie diese Features mit einem aktuellen Rails Connector weiter nutzen möchten, finden Sie den entsprechenden Quelltext in einem Git-Respository.

Der Rails Connector installiert einen Search-Controller, mit dem Suchanfragen an den Search Server gestellt werden können. Über einen zu diesem Controller gehörenden View werden die Suchergebnisseiten gestaltet und die Treffer verlinkt. Die mitgelieferte Suchseite können Sie in Ihrer Rails-Applikation mit der URL /search aufrufen.

Wenn Sie den Rails Connector nach der Installationsanleitung installiert haben, liegt in Ihrer Rails-Applikation im Verzeichnis config/initializers die Konfigurationsdatei rails_connector.rb, in der alle verfügbaren Addons aktiviert oder deaktiviert werden können – darunter die Suche, die voreingestellt eingeschaltet ist. Um die Suche zu deaktivieren, entfernen Sie bitte den Eintrag :search aus der Addon-Auflistung in dieser Datei.

Search Controller, Search Helper sowie mehrere Views, u. a. zur Darstellung des Suchformulars und der Trefferliste, werden vom RailsConnector bereitgestellt und sind im ausgelieferten Zustand bereits funktionsfähig.

Die Suche anpassen

Die mitgelieferten Views können Sie auf einfache Weise an Ihre Anforderungen anpassen.

Der Search Controller ist über die Konfigurationsdatei rails_connector.rb konfigurierbar. Darin können der Host und der Port des Search Servers sowie die zu durchsuchende Collection geändert werden:

RailsConnector::Configuration.search_options = {
  :host => 'custom_host',
  :port => 3011,
  :collection => 'cm-contents-de'
}

Sie können das Verhalten der Suche weiter anpassen, indem Sie in Ihrer Applikation einen eigenen Search Controller anlegen:

class SearchController < RailsConnector::DefaultSearchController
  # Ihre Anpassungen
end

Der Search Controller macht von Objekten der Klasse SearchRequest Gebrauch, um Suchanfragen auf Basis der eingegebenen Suchbegriffe zusammenzusetzen. Um steuern zu können, welche Dokumente gefunden werden dürfen und wie Benutzereingaben bereinigt und in Suchanfragen umgeformt werden, können Sie eine eigene SearchRequest-Klasse in Ihrer Applikation anlegen:

class SearchRequest < RailsConnector::DefaultSearchRequest
  def self.sanitize(text)
    # Ihre Implementierung
  end
  def base_query
    # Ihre Implementierung für die Zusammenfügung
    # der `base_query_conditions`
  end
  def base_query_conditions
    super.merge(
      :eigene_bedingung => 'VQL Code' #, ...
    )
  end
end

Welche Methoden Sie überschreiben, hängt davon ab, welche Aspekte Sie anpassen möchten – die obige Auswahl ist daher nur als Beispiel zu verstehen.

Die Helpers können über einen ähnlichen Mechanismus überschrieben werden. Legen Sie hierzu in Ihrer Applikation eine Datei unter dem Namen app/helpers/search_helper.rb mit folgendem Inhalt an:

module SearchHelper
  include RailsConnector::DefaultSearchHelper
  # Hier können Sie mitgelieferte Helpers überschreiben
  # und eigene anlegen.
end

Den Search Server und die Indizes verfügbar machen

Damit Suchanfragen gestellt werden können, müssen der Search Server und die zu durchsuchenden Indizes für die Rails-Anwendung verfügbar gemacht werden. Hierfür gibt es im Wesentlichen die beiden folgenden Ansätze:

  • Der auf dem Redaktionssystem laufende Search Server wird auch für die Live-Suche verwendet. Diese Lösung ist nur zu empfehlen, wenn die Verfügbarkeit des Redaktionssystems durch die zusätzlich entstehende Last nicht eingeschränkt wird. Auch wenn die Inhalte-Datenbank auf dem Live-System (beispielsweise durch kurze Replikationszyklen) möglichst aktuell gehalten wird, können Diskrepanzen zwischen den Indizes auf dem Redaktionssystem und den tatsächlichen Inhalten auf dem Live-System entstehen (geänderte Inhalte sind schneller im Index vorhanden als in der Live-Datenbank). Wenn diesbezüglich eine absolute Übereinstimmung gefordert ist, kann diese Lösung nicht eingesetzt werden.
  • Auf dem Live-Server wird ein dedizierter Search Server betrieben, bei hoher Last durch Suchanfragen gegebenenfalls auf einem eigenen Rechner. Bei dieser Lösung müssen die Indizes des Search Servers in den gleichen Intervallen auf den Live-Server repliziert werden wie die Inhalte der Datenbank des Redaktionssystems. Diese Lösung ist empfehlenswert, wenn die verwendete Hardware über ausreichende Reserven verfügt.