searchDesign
Class QueryEngine

java.lang.Object
  |
  +--searchDesign.QueryEngine

public class QueryEngine
extends java.lang.Object
implements QueryEngineInterface

Beschreibung: Die QueryEngine bearbeitet die Suchanfragen.

Author:
Fabian Steeg

Constructor Summary
QueryEngine()
           
 
Method Summary
 void initialize(java.lang.String indexFile, java.lang.String docMapFile, java.lang.String resultFile)
          Initialisierungsmethode: Liest die Indexdatei indexFile ein und rekonstruiert daraus den invertierten Index.
 void processQuery(java.lang.String term)
          Bearbeitet eine Suchanfrage.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

QueryEngine

public QueryEngine()
Method Detail

initialize

public void initialize(java.lang.String indexFile,
                       java.lang.String docMapFile,
                       java.lang.String resultFile)
Initialisierungsmethode: Liest die Indexdatei indexFile ein und rekonstruiert daraus den invertierten Index. Um Rankingberechnungen und Kontextausgaben machen zu können, benötigt die QueryEngine die Informationen aus der Datei docMapFile, die beim Indizieren vom Parser angelegt wurde. In der Datei resultFile werden die Suchergebnisse gespeichert.
Specified by:
initialize in interface QueryEngineInterface
Parameters:
indexFile - Pfad zur Indexdatei
docMapFile - Pfad zur DocMap-Datei
resultFile - Pfad zur Ausgabedatei

processQuery

public void processQuery(java.lang.String term)
Bearbeitet eine Suchanfrage. Term ist die Benutzereingabe, welche eine beliebige Kombination von Woertern und/oder Wortketten enthaelt. Eine Wortkette bezeichnet aufeinander folgende Woerter in doppelten Anfuehrungszeichen, z.B. "boese Hexe". term wird in seine einzelnen Bestandteile geparst. Es muessen alle Dokumente ermittelt werden, die alle Woerter des Terms enthalten.
Hier sollte man sich alle Dokumente merken, in denen der erste Term enthalten ist, und die Schnittmenge von dieser Dokumentenmenge und den Dokumentenmengen der weiteren Terme der Suchanfrage bilden.
Bei der Behandlung von Wortketten muss verifiziert werden, dass die einzelnen Woerter einer Wortkette adjazent sind. Die noetigen Informationen dafür sind in den Fundstellen enthalten.
Für die Ausgabe werden die ermittelten Dokumente nach dem Ranking mit Hilfe von Quicksort sortiert. Anschließend gibt processQuery die Suchergebnisse sowohl auf dem Bildschirm als auch in die Ausgabedatei resultFile aus. Die Ausgabe der KeyWords im Kontext geschieht mittels eines RandomAccessFiles auf die entsprechenden Dokumente. Für die Ausgabe wird der Originaltext leicht aufbereitet.
Specified by:
processQuery in interface QueryEngineInterface
Parameters:
term - Die eingegebene Suchanfrage