Autor: Gregor Panzer

Parser

WebSeiten-Parser


Der Parser wird über die Klasse PSourceFileParser gestartet. Als Parameter erhält der Konstruktor dieser Klasse ein Objekt vom Typ CFetchedSourceFile, also eine geladene Seite mit zusätzlichen Meta Informationen. Anhand des Content-Type der Seite wird festgestellt, welche Art von Text geparst werden soll und ein entsprechender Parser wird instantiiert. Die speziellen Text-Parser erben jeweils von der Klasse PTextParser und sind damit gezwungen, die Schnittstellenmethoden zu implementieren. Zur Zeit sind zwei Text Parser implementiert: PHtmlParser und PPlainParser, weitere Text Parser können jedoch leicht in das System eingebunden werden.
Ein Text Parser erzeugt aus der gegebenen Seite ein Objekt vom Typ PPage und ein HashSet. Das HashSet enthält alle URL's, die auf der geparsten Seite gefunden wurden und wird zum Laden von weiteren Seiten verwandt. Die PPage enthält einen Vector mit den Wörtern der geparsten Seite, sowie Angaben zum Format und zur Position des Wortes. Außerdem enthält die PPage sämtliche gefundenen Meta Informationen und URL's, damit diese auch bei einer Suche zur Verfügung stehen. Während des Parsens werden die einzelnen Wörter gegen ein HashSet mit Stopwörtern geprüft und gefundene Stopwörter werden entfernt. Anschließend wird jedes Substantiv auf seine Stammform reduziert.
Beide Text Parser arbeiten zur Zeit mit einer langen Folge von Case Abfragen, was das Parsen deutlich verlangsamt.Diese Stuktur könnte intern verändert werden, ohne die Schnittstellen zu verändern.

Anfrageparser


Der Anfrageparser wird über die Klasse PQueryParser gestartet. Als Parameter erhält der PQueryParser beim Start eine Angabe über die Sprache, einen Anfragestring und (optional) einen RankingString und Meta Daten. Der Anfrageparser extrahiert zunächst einzelne Wörter aus den Strings, entfernt Stopwörter und reduziert die Substantive auf ihre Stammform. Anschließend wird ein Objekt vom Typ PParsedQuery erzeugt, in das die Anfrage eingebaut wird. Die PParsedQuery enthält verkettete Listen, in denen die Anfrage und die Rankinginformation gespeichert werden.