WaBis

walter.bislins.ch

Log: Suchindex

26.05.2007

Alle APhS-Wikis haben bereits einen Umfang von über 1500 Seiten (21.09.06). Bei der Volltext-Suche eines Begriffes in allen Wikis müssen entsprechend viele Dateien eingelesen und durchsucht werden. Dabei ist vor allem der Dateizugriff der Flaschenhals, denn dabei müssen für jede einzelne Datei mechanisch Köpfe auf der Festplatte positioniert werden, was ca. 10ms pro Datei benötigt. Das ergibt also ca. 15 Sekunden reine Positionierungszeit, wenn der Server nichts anderes zu tun hat. Das ist viel zu lange!

Lösung: Ich habe einen Index-Mechanismus programmiert und ins Wiki eingebaut. Im Wesentlichen wird einfach der aktuelle Inhalte jeder Seite eines Wikis strukturiert in eine einzige Datei gepackt. So muss bei der Volltextsuche pro Wiki nur eine einzige Datei gelesen werden. Im ersten Moment könnte man denken, dass dies eine unnötige Doppelspurigkeit ist. Aber selbst Datenbanken verwalten einen Index, der nicht selten ebenso gross wie die eigentlichen Daten wird.

Dadurch, dass der Text nicht in Worte zerlegt, sondern als Ganzes im Index gespeichert wird, ist jede beliebig komplizierte Suche in einer Datei möglich. Es gibt keine Einschränkungen. Das Einlesen eines sehr grossen Index-Files z.B. 1 MB dauert nur ca. 20 ms. Das entspricht ca. 1000 Seiten. Statt 10 Sekunden für 1000 Seiten braucht die neue Methode also nur noch 20 ms + 10 ms für die Positionierung!

In der Praxis ist der Geschwindigkeitsgewinn nicht so extrem, denn die Index-Files müssen auch laufend aktualisiert werden. Das geschieht vollautomatisch und nur bei Bedarf. Dabei werden nur jene Seiten in den Index neu eingelesen, die sich seit der letzten Abfrage geändert haben. Mit dieser Methode konnte die Suchgeschwindigkeit um Faktor 10 - 20 verschnellert werden! Das Verhältnis wird umso grösser, je umfangreicher die Wikis werden. So dauerte eine Volltextsuche durch alle Wikis im September 2006 vor dem Einführen der Index-Files ca. 30 Sekunden, danach nur noch 1.5 bis 3 Sekunden!

Verwandte Themen

  • Update des Index, wenn per FTP Wiki-Seiten eingespielt werden
  • Datenschutz: Index in geschütztes Verzeichnis legen
Weitere Infos zur Seite
Erzeugt Samstag, 27. Juni 2009
von wabis
Zum Seitenanfang
Geändert Samstag, 27. Juni 2009
von wabis