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.