ht://dig - Die freie Suchmaschine für Intranets und mehr


By rakekniven - Posted on 21 August 2005

Die freie Suchmaschine für Intranets und mehr

Ich habe schon oft was gesucht um bei zahllosen Dokumenten den Überblick zu halten. ht://dig ist meine Lösung geworden.
Damit kann ich meine grosse Anzahl an html-seiten durchstöbern, pdf-filesund andere formate sind auch möglich.
Ebenso klasse ist die Möglichkeit die Ergebnisseiten sehr frei zu gestalten. So genug gelabert.

Software und Dokumentation :

Unter folgender Adresse ist das ht://dig-Projekt beheimatet :
http://htdig.org/

Hier gibt´s die aktuellen releases, FAQ´s, Infos sowie eine superdoku zur conf-datei.
Bei den meisten Distributionen ist ein passendes rpm (deb) dabei.
Der Triathlon "./configure, make, make install" kann ausgelassen werden.

Die Konfigurationsdatei htdig.conf

Der Standardpfad für die Konfigurationsdatei ist /opt/www/htdig/conf.
Die mitgelieferte conf-datei ist schon recht brauchbar und es sind nur wenige Anpassungen zu machen.
Ich spreche hier nicht von Expertenlösungen ;-)

Die meiner Meinung interessanten Einträge habe ich im folgendem kurz erläutert .
Wenn deutsche Seiten suchbar gemacht werden sollen dann unbedingt diese Zeile einfügen :

locale: de_DE

 

Um einen anderen Pfad als standardverzeichnis zu definieren ist folgendes von Nöten :

common_dir: <dein pfad>

 

 

Der Startpfad ab wo Dateien in den Index aufgenommen werden :

 start_url: http://192.168.0.2/

hier natürlich Deine URl angeben.

Die maximale Grösse der zu untersuchenden Dateien :

max_doc_size: 1000000


Bedenke dass PDF - Dateien nur vollständig indexiert werden können. Ist die Datei grösser als der eingestellte Wert wird diese übersprungen. Deshalb diesen Wert an die grösste PDF-Datei anpassen.

 

Ist die Konfigurationsdatei nun fertig geht´s gleich weiter.

 

Erstmaliges erzeugen der Datenbanken (Suchindex)

Damit erste Suchanfragen beantwortet werden können muss ein Index erzeugt werden.
Folgende Befehle in der shell eingeben :

/opt/www/htdig/bin/htdig -i
/opt/www/htdig/bin/htmerge

Bei Verwendung der Option -v sind die Programme etwas gesprächiger über ihr tun.
Die Option -i bei htdig bewirkt das jedesmal der komplette Index neu erstellt wird, deshalb ist dies Option nur beim ersten mal nötig oder einmal im Monat.
Nach Ausführung sind einige Dateien im Datenbankverzeichnis entstanden, normalerweise /opt/www/htdig/db.

foobar:/ # ls -lha /opt/www/htdig/db/
insgesamt 85M
drwxr-xr-x 2 root root 142 Mär 13 04:31 .
drwxr-xr-x 6 root root 114 Nov 16 23:40 ..
-rw-r--r-- 1 root root 16M Mär 13 04:31 db.docdb
-rw-r--r-- 1 root root 603k Mär 13 04:31 db.docs.index
-rw-r--r-- 1 root root 33M Mär 13 04:31 db.wordlist
-rw-r--r-- 1 root root 34M Mär 13 04:31 db.words.db

Die Datenbanken können eine ganz schöne Menge Platz beanspruchen, hier schon 85 MB.

Auch sollte beim erstem mal die Datenbanken für die Endungen erzeugt werden.
Dazu habe ich folgende Eintraege in der Konfigurationsdatei gemacht :

endings_affix_file: ${common_dir}/german.aff
endings_dictionary: ${common_dir}/german.0
endings_root2word_db: ${common_dir}/r2wgerman.db
endings_word2root_db: ${common_dir}/w2rgerman.db

Voraussetzung ist natürlich das Sie sich die Dateien german.aff und german.0 besorgt haben.
Nun einfach folgenden Befehl eingeben:

foobar:/ # ./htfuzzy endings

Es sollten nun zwei Datenbanken generiert worden sein.

foobar:/ # ./htfuzzy synonyms

Diese Eingabe generiert eine Datenbank zur Synonymerkennung.

 

Automatisches erstellen der Indexe

Es wird bereits ein script namens rundig.sh mitinstalliert, welches zum automatischen Indexerzeugen verwendet werden kann.
Jedoch ist es zu kompliziert, deshalb ein einfacherer, anderer Vorschlag.
Erstelle eine Datei, hier htdig.sh in root-home und füge zwei Zeilen hinzu :

foobar:/ # more /root/htdig.sh
/opt/www/htdig/bin/htdig
/opt/www/htdig/bin/htmerge

 

Nun das script noch ausführbar machen :

foobar:/ # chmod a+x /root/htdig.sh

 

Wesentlich bequemer als das script jedes mal von Hand auszuführen ist es automatisch zu tun. Dazu nutzen wir cron. z.B. soll jede Nacht um 0130 die Indexe erzeugt werden. Mit Crontab -e einen weiteren cronjob hinzufügen. Hoffe den Standardeditor vi kann jeder einigermassen bedienen. How-to´s gibt es ja wie Sand am Meer.

foobar:/ # crontab -e
 30 1* * * /root/htdig.sh

 

Ab sofort hast Du jeden Morgen einen frisch generierten Index.

Darf´s noch mehr sein ausser txt- und html-dateien ?

Eines Vorweg, nun ist etwas bastelei angesagt.
Besorge Dir die Scriptsammlung doc2html. Die aktuellste Version findest Du hier :http://www.htdig.org/files/contrib/parsers/.
Erstelle einen Ordner bspw. /usr/local/scripts/doc2html und kopiere alle dateien aus dem archiv hierhin.
Die wichtigste Datei ist doc2html.pl . Perl was sonst ;-)

PDF :

Installiere das paket xpdf.

Passe folgende Zeile in doc2html.p an Dein System an :
my $PDF2HTML = '/usr/local/scripts/doc2html/pdf2html.pl';

Passe folgende Zeilen in pdf2html.p an Dein System an :
my $PDFTOTEXT = "/usr/bin/pdftotext";
my $PDFINFO = "/usr/bin/pdfinfo";

Winword (doc) :

Installiere das paket catdoc.

 

Passe folgende Zeile in doc2html.p an Dein System an :
my $CATDOC = '/usr/X11R6/bin/catdoc';

MS Excel (xls) :

War bei mir ´ne schwere Geburt ;-)

Installiere die pakete xlhtml und xlhtml-cole .

Füge folgende Zeile in htdig.conf bei external_parsers ein:
application/excel->text/html /usr/local/scripts/doc2html/doc2html.pl \

Passe folgende Zeilen in doc2html.p an Dein System an :
my $XLS2HTML = '/usr/bin/xlHtml';

Passe folgende Zeilen in doc2html.p an :
{---Beginn Ausschnitt von doc2html.p ---}
# Microsoft Excel spreadsheet
if ($XLS2HTML) {
   $mime_type = "application/msexcel|application/excel|application/vnd.ms-excel";
   $cmd = $XLS2HTML;
   # xlHtml uses filename as title, change this:
   $cmdl = "$cmd -fw $Input | $ED \"s#<TITLE>$Input</TITLE>#<TITLE>[$name]</TITLE>#\"";
   $magic = '^\320\317\021\340';
   &store_html_method('Excel (xlHtml)',$cmd,$cmdl,$mime_type,$magic);
}
{---Ende Ausschnitt von doc2html.p ---}

Links