Erweiterte Suche in Wikijournals

Mo 02 Juli 2018 by Karsten Krumrück

Hallo,

Wikijournals basiert auf Mediawiki und verwendet Elasticsearch als Suchengine. Damit stehen für die Suche in Wikijournals auch die Funktionen der Mediawiki API und die erweiterten Suchfunktionen von Elasticsearch zur Verfügung

Diese Funktionen werden über die Erweiterung CirrusSearch realisiert. Im folgenden möchte ich diese Suchfunktionen näher erläutertern.

Suche über Mediawiki API

Über die Mediawiki-API können z.B. alle Seiten zu einer Kategorie abgerufen werden. Da alle Publikationen und alle Verlage in Wikijournals über die Kategorien "Publikation" bzw. "Verlag" identifiziert werden, können sie über einen entsprechenden API Aufruf angerufen werden:

Liste der Zeitschriften

curl "https://wikijournals.info/api.php?action=query&list=categorymembers&cmtitle=Category:Publikation&format=json&cmlimit=50"

Liste der Verlage

curl https://wikijournals.info/api.php?action=query&list=categorymembers&cmtitle=Category:Verlag&format=json&cmlimit=50

Nutzung von Elasticsearch Funktionen

Die Anbindung an Elasticsearch erfolgt über die CirrusSearch-Erweiterung. Diese Erweitere stellt entsprechende Suchfunktionen zur Verfügung, die bei der Suche in Wikijournals in der Standardsuche über die Suchseite verwendet werden können. Zu den wichtigsten Suchfunktionen gehörden die folgenden Parameter:

  • intitle
  • insource
  • incategory

intitle

Mit dem Suchparameter intitle wird der Suchbegriff nur im Seitentitel gesucht. Da bei Wikijournals der Seitentitel auch den Titel des Artikels enthält, kann so bequem nach Artikeln über ihren Titel gesucht werden

Der Suchstring intitle:Microsoft würde zum Beispiel nach allen Artikeln suchen, in deren Titel der Begriff Microsoft vorkommt.

insource

Dieser Suchparameter durchsucht den kompletten Inhalt einer Seite nach dem angegebenen Suchbegriff. Wenn man weiss, dass z.B. der Autor eines Artikels immer mit der Zeichenkette |author= eingeleitet wird, kann man damit bequem nach allen Artikeln eines bestimmten Autors suchen.

So würde z.B. der Suchstring insource:|author=Matthias Mett alle Artikel des Autors Matthias Mett finden.

incategory

Mit diesem Parameter kann man sich alle Seiten einer bestimmten Kategorie anzeigen lassen. Alle Verlage haben zum Beispiel die Kategorie "Verlag".

Der Suchstring incategory:Verlag findet damit alle Verlage, die bisher in Wikijournals erfasst wurden

In Arbeit ist auch eine eigene REST-API, über die die einzelnen Attribute der Artikel recherchiert werden können. Aber dazu demnächst mehr ;o)

Viele Grüße Kruemel