PerlfectSearch

From Dietrich Blog (Strato)
Jump to: navigation, search

Meine Situation und die Anforderungen

Nachdem mir der Linux-Server mit ht://dig nicht mehr zur Verfügung steht, habe ich nach einer Site-Suchmaschine gesucht, die auf den mir zur Verfügung stehenden Plattformen lauffähig ist (und die ich auch mit wenig Aufwand zum Laufen bekomme).

Die Lösung: Perlfect Search

Fündig geworden bin ich bei meinem neuen WebProvider-Provider www.westhost.com. Der bietet seinen Kunden Perlfect Search von Giorgos Zervas und Daniel Naber an. Das ist eine reine Perl-Lösung, arbeitet also nicht wie ht://dig mit C++ Programmen, die auf der Server-Plattform compiliert werden müsssen (Binaries). Siehe auch: IX 11/2000.

Wer sich für Perlfect Search (aktuelle Version 3.31b) entscheidet, kann folgende Vorteile nutzen:

  • einfache Installation;
  • sinnvolles Ranking, also nach Relevanz sortierte Treffer;
  • ‘+’ und ‘-’-Operatoren wie bei Altavista;
  • die Ergebnisseite ist leicht anzupassen;
  • OpenSourceSoftware (GPL)
  • Indexing of dynamical web-content (via http protocol)
  • Indexing of PDF since version 3.20 (requires PdftoText)
  • Indexing of MicrosoftWord (requires Antiword)

Installation auf lokalem Notebook

  • Definitive Software Library ID: PerlfectSearch
  • Name: Perlfect Search
  • Version: 3.31b
  • Hersteller/Bezugsquelle: http://www.perlfect.com
  • Installations-Ordner: E:\var\www\www.kr8.de\cgi-bin\perlfect
  • Konfigurations-Dateien: /perlfect/search/conf.pl
  • Systemvoraussetzungen:
    • WebServer mit CGI (z.B. Apache)
    • Perl 5.004 oder höher
    • Perl Modul DB_File 1.72 (ppm / install DB_File / quit )
    • diverse Perl-Module
    • PdftoText zum Indexieren von PDF-Dokumenten
    • Antiword zum Indexieren von MicrosoftWord-Dokumenten

Anwendungshinweise

http://www.perlfect.com/freescripts/search/faq.shtml

(1) Erstellen des Index

Im Ordner /perlfect/search: perl indexer.pl

(2) Aufruf der Suchfunktion

Suchen in der lokalen Website krachtweb.kr8.de <form method="get" action="http://krachtweb.kr8.de/cgi-bin/perlfect/search/search.pl"> <input type="hidden" name="p" value="1"> <input type="hidden" name="lang" value="en"> <input type="hidden" name="include" value=""> <input type="hidden" name="exclude" value=""> <input type="hidden" name="penalty" value="0"> <input type="hidden" name="mode" value="all"> <input type="text" name="q"><input type="submit" value="Search"> </form>

Perlfect Search Installation 3.31b

Mein WebProvider-Provider Westhost verwendet <a href="http://www.westhost.com/vps.html">Virtual Private Server (VPS) Technologie</a>, womit man noch viel mehr machen könnte. Aber dies ist erst einmal ein erster ganz einfacher Schritt nach dem Motto "Keep It Simple and Stupid".

Zum Testen der ganzen Geschichte auf meinem lokalen Computer musste ich eine aktuelle Version von Perl installieren (Active Perl 5.6.1) und das Perl Package DB_File 1.806 (www.cpan.org) zur Unterstützung von Berkeley DB.

Zuerst zur Installation: Obwohl das README das Installationsskript anpreist, ist die Einrichtung selbst ohne Skript so einfach, dass man sie am besten gleich von Hand ausführt.

  • Im Verzeichnis /var/www/cgi-bin entpackt man das Archiv.
  • Nun sind in der Datei conf.pl die ersten fünf Optionen anzupassen, alle anderen Werte dienen der Feineinstellung und können zunächst unverändert bleiben.
  • Bei der manuellen Installation muss man im Installationsverzeichnis ein Verzeichnis data anlegen, das die Index-Dateien aufnimmt.
  • Alle Perl-Dateien ausser search.pl sollten Rechte bekommen, die eine Ausführung als CGI nicht gestatten. Alternativ kann man sie in ein vom Webserver nicht benutztes Verzeichnis kopieren.
  • Der Aufruf ./indexer.pl im Verzeichnis /var/www/cgi-bin/search generiert den Index.
  • Jetzt bleibt nur noch, die Datei search_ form.html, eventuell mit einem angepassten action-Wert in das Wurzelverzeichnis des HTTP-Daemons zu kopieren, und man kann mit dem Testen der Suchmaschine beginnen.

Perlfect Search zum Testen

Suchen in der Website www.kr8.de <form method="get" action="http://www.kr8.de/cgi-bin/search/search.pl"> <input type="hidden" name="p" value="1"> <input type="hidden" name="lang" value="en"> <input type="hidden" name="include" value=""> <input type="hidden" name="exclude" value=""> <input type="hidden" name="penalty" value="0"> <input type="hidden" name="mode" value="all"> <input type="text" name="q"><input type="submit" value="Search"> </form>

Indexing of Dynamic Web Content

Perlfect Search kann im Prinzip nicht nur statischen HTML-Content, sondern auch dynamischen Content indizieren. Beim Indizieren durch Perlfect Search liest das Indizierer-Modul indexer.pl ... Allerdings sind mir zwei Probleme aufgefallen:

Indexing PDF-Documents with Perlfect Search

Seit der Version 3.20 gibt es die Option, PDF-Dokumente zu indizieren. Dazu muss in conf.pl der Parameter $EXT_FILTER gesetzt werden. Benötigt wird das Programm pdftotext.exe, das in xPDF enthalten ist: Xpdf: A PDF Viewer for X.

Freundlicherweise sind auf der Website XPDF auch Win32-Binaries, sodass man sofort mit dem Indizieren von PDF-Dateien unter Windows loslegen kann. Einziges Problemchen: Falls man ausser PDF-Dateien noch andere Datei-Typen im Indizierungsberech herumzuliegen hat, sollten diese unbedingt über MIME-Types unterscheidbar sein. In meinem Fall musste ich in der Apache-Konfigurationsdatei mime.types folgendes ergänzen:

  • Application/vnd.visio vsd
  • image/x-emf emf
  • image/x-wmf wmf
  • image/x-swi swi

nun wurden die in der PerlfectSearch-Konfigurationsdatei conf.pl selektierten PDF-Dateien (Application/PDF) bestens indiziert und die anderen nicht (der Versuch, die anderen auch zu indizieren brachte nämlich einen Absturz).


Weitere Einzeiheiten: http://www.danielnaber.de/perlfectsearch/


-- Main.DietrichKracht - 24 Jan 2004