SuchMaschinen

From Dietrich Blog (Strato)
Revision as of 15:32, 9 June 2007 by Dkracht (talk | contribs)

Jump to: navigation, search

Suchen und Finden

Meine Anforderungen

Die wichtigste Funktion meines Wissensmanagements (KnowledgeManagement) ist, Dinge wiederaufzufinden, die ich schon irgendwo (auf meinem PC oder in Papierablagen) habe. Darüberhinaus kommt es vor, dass ich Informationen aus fremden Quellen suche.

  • Klassich ist der Fall eines Archivs, das in spezieller Form Dinge abspeichert, nach denen dann mit speziellen Suchfunktionen gesucht werden kann.
  • Auch klassisch ist heutzutage das Suchen im Internet, wo im einfachsten Fall nach HTML-Seiten gesucht wird.
  • Ich möchte möchte nun aber ganz schlicht und ergreifend in allen meinen Dateien auf meinem Notebook-Computer suchen. Für diesen Fall muss ein Index aufgebaut werden, der dann als Basis für Suchanfragen dient.

Aufgabenstellung: Website-Indexer / Desktop-Indexer

Für meine eingene Website möchte ich eine Suchmaschine anbieten, mer Besucher, zusätzlich zur ausgeklügelten Navigation auch über eine Volltextsuche über alle meine Webseiten möglichst direkt das finden kann, was er/sie sucht.

Die dafür eventuell erforderlichen technischen Komponenten auf der Server-Seite müssen sehr genau überlegt werden, denn ein billiger Web-Hosting-Provider bietet da nur sehr wenig.

Zur Zeit ist die eigene Website bei t-online gehostet. Als Provider mit PHP und MySQL steht auch free.fr zur Verfügung.

Siehe auch: http://www.searchtools.com

Lösungsarchitektur

Wichtig ist die Erkenntnis, das hier eine Schichtenarchitektur sinnvoll ist, wobei die untern dargestellten drei Schichten unterschiedliche systemtechnische Anforderungen aben und auch auch unterschiedlichen Systemplattformen laufen könnten.

Indexing - Harvesting

Man benötigt einen wirklich guten Indexer, der die Website wie ein Spider per HTTP-Protokoll durchläuft und dabei den auf der Oberfläche sichtbaren Text indiziert. Damit werden die Hyperlinks durchlaufen, dynamische inhalte (z.b. von PHP, ASP, JSP-Seiten) richtig behandelt, Zeichensätze (Umlaute) richtig beachtet und ggf. weitere Dokumenttypen (PDF, MicrosoftWord, PowerPoint,...) auch verarbeitet.

Das Ergbnis ist eine Dokumentliste und eine Wortliste.

Diese Komponente muss nicht notwendig als Web-Applikation laufen.

Schnelle Indexdatenbank

Die in der Stufe 1 (Indexing/Harvesting) gewonnenen "Rohdaten" werden jetzt veredelt und für den Zweck des schnellen Suchzugriffs optimiert aufbereitet.

Diese Komponente muss nicht notwendig als Web-Applikation laufen.

Schnelle Such-Oberfläche

Über ein HTML-Formular soll der Anwender seine Suchbegriffe eingeben. Das Suchergebniss soll dann als Fundstellenliste präsentiert werden.

Diese Komponente muss zwingend als Web-Applikation laufen.

Lösungsmöglichkeiten

  1. Fremdanbieter: Provider für solche Website-Suchmaschinen
  2. ht://Dig (SourceForge)
  3. mnogosearch
  4. siteIndexer (SourceForge)
  5. dtSearch
  6. PerlfectSearch

Software für Suchmaschinen

Man hat sich ja an sehr schöne Suchfunktionen aus dem Internet gewöhnt (früher Altavista, heute Google). Wenn man so etwas auf den lokalen PC übertragen könnte, wäre dann noch eine grosse Frage zusätzlich: Kann ich auch nach den Inhalten von Nicht-HTML-Dateien (z.B. MicrosoftWord, PowerPoint, PDF, E-Mails,...) suchen?

Microsoft:
Da gab es zum Web-Server IIS schon immer einen Index-Server. Für den lokalen PC gibt es auch eine in Windows integrierte Suchfunktion nach Inhalten, die auf einem File-Indexer beruht.
Altavista:
Da gab es mal ein Personal Altavista, mit dem man seine lokalen Daten durchsuchen konnte.
dtSearch:
Habe ich 2001 mal ausprobiert, war gut, aber ist auch teuer.
ht://Dig:
Eine sehr verbreitete klassische Index-/Such-Lösung. Einzelheiten unter HtDig.
Perlfect Search 3.31:
Eine Index-/Such-Lösung in Perl, die mein WebProvider-Provider Westhost unterstützt. Einzelheiten unter PerlfectSearch.
SearchBlox:
Eine in Java (J2EE) auf Basis von Jakarta Lucene (http://jakarta.apache.org/lucene/docs/index.html) realisierte Suchmaschine. Kann auch Word, PowerPoint, PDF und Excel. Leider kommerziell und gepfefferte Preise.... http://www.searchblox.com
nutch:
Eine in Java (J2EE) auf Basis von Jakarta Lucene realisierte einfache OpenSourceSoftware http://www.nutch.org
ASPSeek:
Linux-only. Free Software under GNU GPL. CGI-Fontend... (http://www.aspseek.org)
mnoGoSearch:
... http://www.mnogosearch.org/win.html
Namazu:
....
sitesearch:
...Teil von....
Search Engine Builder Professional:
Indexiert Dokumenttypen: xyz. Baut lokale Suchmaschine (ASP, PHP, JavaScript - ohne MySQL), die z.B. auch für CD-ROMs und DVDs geeignet ist.
Search Maker Pro:
Indexiert Dokumenttypen: PDF, DOC, RTF, PPT, XLS,.. Dabei werden Dokumentinhalt und Dokument-Property-Felder indexiert. Es wird eine lokale, in sich abgeschlossene Suchmaschine generiert (ASP, PHP, JavaScript), die z.B. auch für CD-ROMs und DVDs geeignet ist.

Update Oktober 2004: Desktop Search

blinkx:
Produkt "blinks 0.4.34" http://www.blinkx.com Windows-Oberfläche, Dateien: ..., PDF, PPT, ZIP. Aber völlig instabil.
Anstelle eines Pre-View gibt es ein Pop-Up-Fenster mit einem Abstract.
Copernic:
Produkt "Copernic Desktop Search 1.0" http://www.copernic.com/en/products/desktop-search Windows-Oberfläche, Dateien: TXT/RTF DOC XLS, PPT, Outlook-Mail, PDF, Music, Video, Pictures (ZIP?????)
Enfish:
Produkt Enfish "Professional 6.1" http://www.enfish.com Windows-Oberfläche, Dateien: ...PDF, PPT, ZIP-Inhalte, kommerziell
HotBot:
Produkt "HotBot Desktop" http://www.hotbot.com/tools/desktop
Google:
Produkt "Google Desktop Search" http://desktop.google.com Dateien: TXT, DOC, XLS, PPT, Outlook-Mail (PDF nicht)
Filehand: Produkt "FilehandSearch 2.0" http://www.filehand.com Oberfläche: Windows, Dateien: TXT, DOC, XLS, PPT, PDF, MP3 (ZIP???)
SWISH-E:
http://www.swish-e.org
Wilbur:
Produkt "Wilbur 2.2" http://wilbur.redtree.com Oberfläche: Windows,...
X1 Technologies:
Produkt "X1Search" http://www.x1.com Oberfläche: Windows, ....
X-Dot:
Produkt "x-friend 0.2" http://www.x-friend.de Browser-Oberfläche, Java-basiert, verwendet Apache-Lucene, Dateien: TXT, DOC, XLS, PPT, PDF, IMAP E-Mail, MP3 ID3 Tag, Bilder, ZIP-Archive,...

Update Januar 2005: Desktop Search

Yahoo Desktop Search: Yahoo hat sich mit X1Search zusammen getan und eine bessere Oberfläche geschaffen. Überragender Pluspunkt bleibt die Viewer-Technologie von X1Search (ex Magellan) YahooDesktopSearch

Meine Bewertung

Produkt/Klasse Pro Contra
blinkx 0.4.34 kann PDF, PPT und ZIP-Inhalte
E-Mail: Outlook und Eudora
kostenfrei
läuft extrem instabil unter Win2000
kommerziell
Thunderbird-E-Mail nicht unterstützt
CopernicDesktopSearch 1.0
Desktop-Indexer
Dokumenten-Preview
On-the-fly indexing
Kleiner Index (Beispiel: 662MB/34MB)
E-Mail nur Outlook, nicht IMAP/POP3
Indiziert nicht den Inhalt von ZIP-Archiven!!!
dtSearch Selbsttragende CD-Indizierung teuer
Enfish 6.1 kann PDF, PPT und ZIP-Inhalte
E-Mail Outlook, Lotus Notes, AOL-Mail
Schönes Pre-View
E-Mail nicht Thunderbird
kommerziell teuer
Filehand 2.0 Windows-Oberfläche Inhalte von ZIP-Archiven werden nicht indiziert
Google PDF nicht indiziert
Nocht nicht fertig (Beta)
htDig
Website-Indexer
Bestandteil der Linux SuSE Edition CGI-Binary muss kompiliert werden (Cygwin)
mnogoserach
PerlfectSearch
Website-Indexer
Plattformen Linux/Windows durch Perl
Internationalisierung durch i18n
Website-Indexer
PDF und Word durch Third-Party-Zusätze
Wilbur 2.2
Desktop-Indexer
Inhalte von ZIP-Archiven werden indiziert
CD-ROM Indexing
QuickView support
Freeware
PDF und Thunderbird-Email wird indexiert
Word und PowerPoint werden nicht indexiert.
Kein Document Preview, aber Integration mit QuickView
X1Search 04.09
Desktop-Indexer
Inhalte von ZIP-Archiven werden indiziert
Dokument-Preview integriert
Guter PowerPoint-Preview
teuer: $99
Thunderbird-Email wird nicht indiziert
Im PPT-Preview wird nicht mit Autoscroll auf "first occurance" positioniert
x-friend 0.2
Desktop-Indexer
Plattformunabhägig durch Java
Beliebiger WebBrowser
Gut passend zur meiner Architektur (Java, WebBrowser,
Apache Lucene, IMAP...)
E-Mail IMAP
Selbsttragende CD-Indizierung
Inhalte von ZIP-Archiven werden nicht indiziert
PowerPoint PPT wird nicht indiziert
POP3-Email wird nicht indiziert
Preview von der Ansichsgrösse nicht einstellbar
Sehr schlichter PPT Preview

Meine Lösungsauswahl

Für das russische mnogoserach spricht die Verwendung von PHP für die Search-Funktion.

Allerdings wird ein modifiziertes PHP benutzt, das man sich selbst durch Compilation erzeugen muss. Da die Lösung bei einfachen Providern laufen soll, scheidet diese Variante aus.

Für die Variante ht://Dig spricht:

  • Die sehr grosse Verbreitung und damit eine Sicherheit für eine mittelfristig gesicherte Nutzung
  • ht://Dig wird als Bestandteil der SuSE 8.0 Edition mit ausgeliefert (binary)
  • Eine Compilation unter Win98 mit Cygwin war auf Anhieb erfolgreich.

Nachteil bei ht://Dig ist nachwievor, dass die Such-Oberfläche als CGI-Executable realisiert ist. Nicht jeder Web-Hosting-Provider lässt "freie CGIs" zu.

Die Auswahl fiel trotzdem auf HtDig, da die Ausgereiftheit und Mächtigkeit der Funktionen sowie die solide Community einfach überzeugen. Der Nachteil der CGI-Suchoberfläche wird im Sinnne der Architektur in Kauf genommen, mit der Idee, dafür im Laufe der Zeit einen Austausch vorzunehmen. Die Idee ist, eine PHP-Suchoberfläche entweder direkt auf die Berkely-DB2-Datenbank zu setzten, oder die DB2 auf MySQL zu konvertieren und dann eine PHP-Oberfläche darauf zu setzen.

Mehr Komfort: Enfish oder Copernic oder X1Search

Enfish 6.1 und Copernic bestechen durch sehr elegante Windows-Oberflächen. Allerdings ist die Funktionalität von Copernic nicht ausreichend und Enfish 6.1, das sehr mit seiner Lotus-Notes-Email-Indexierung lockt, ist viel zu teuer. Es bleibt X1Search, das zwar nicht so elegant aussieht, aber durch solide Funktionalität überzeugt.


Indizieren: Was soll, was soll nicht indiziert werden

Da das aufbauen und Aktualisieren eines solchen Index erstens Zeit kostet und zweitens Platz kostet, loht es sich zu überlegen, welche Datei-Typen man wirklich indizieren will und welche man nicht indizieren will.

Postiv (sollen indiziert werden)

Zur Konfiguration von Indexern (Teil einer Suchmaschinen-Archtektur) benötigt man MIME-Types und Parser für jeden MIME-Type:

Extension MIME Type Parser
.dbf application/dbase
application/x-dbase
 ?
.doc application/msword catdoc aus: http://freshmeat.net/projects/catdoc/
.pdf application/pdf pdftotext.exe aus XPDF: http://www.foolabs.com/xpdf/
.rtf application/rtf  ?
.xls application/vnd.ms-excel catdoc aus: http://freshmeat.net/projects/catdoc/
.ppt application/vnd.ms-powerpoint  ?
.html text/html OK
.htm text/htm OK
.svg image/svg+xml  ?
.txt text/plain OK
.vsd application/vnd.visio Visio
.xml text/xml
application/XML
 ?
.xsl  ?  ?
.zip application/zip  ?


Negativ (sollen nicht indiziert werden)

  • *.bak
  • *.dbs
  • *.dl_
  • *.do_
  • *.dsk
  • *.ex_
  • *.e2_
  • *.ndx
  • *.ffx (löschen)
  • *.ffo (löschen)
  • *.ffl (löschen)
  • *.ffa (löschen)
  • *.pqi
  • *.z


-- Main.DietrichKracht - 09 Jan 2004