220 likes | 358 Views
Eine Suchmaschine für Webserver unter OpenVMS. Martin Vorländer mv@pdv-systeme.de. ht://Dig?. indizierende Suchmaschine mit „Digger“ (Crawler, Harvester, Robot) Einsatzgebiet: einzelne Domänen oder Intranets
E N D
Eine Suchmaschine für Webserver unter OpenVMS Martin Vorländer mv@pdv-systeme.de 25. DECUS-Symposium 3C05 / 1
ht://Dig? • indizierende Suchmaschine mit „Digger“ (Crawler, Harvester, Robot) • Einsatzgebiet: einzelne Domänen oder Intranets • entwickelt an der San Diego State University, um die diversen Webserver auf dem Campus durchsuchen zu können • entwickelt unter Unix • geschrieben in C++ und C • lizensiert unter GNU General Public License (GPL) v2 • Portierung der Versionen 3.1.5 / 3.1.6 nach OpenVMS Alpha mit Unterstützung und Ideen u.a. von • Patrick Young (University of New South Wales, Sydney) • Richard Barry (Compaq CSWS Project Team) 25. DECUS-Symposium 3C05 / 2
Features • Indizierung von HTML und Text • Externe Parser / Konverter konfigurierbar, z.B. zur Indizierung von • PDF (z.B. mit pdftotext aus dem XPDF-Paket) • MS-Word (z.B. mit catdoc) • Möglichkeit der Abbildung von URLs auf lokale Pfade • inkrementelle Indizierung • neben exakter Suche auch „fuzzy“-Suchalgorithmen • soundex, metaphone, common word endings, synonyms • Templates zur Ausgabe der Suchergebnisse • Datenhaltung mit Berkeley DB 25. DECUS-Symposium 3C05 / 3
Features (Forts.) • Eine Konfigurationsdatei • htdig.conf • Drei Phasen • Digging • Merging • Searching • Fünf Programme • htdig.exe (htdump.exe, htload.exe) • htmerge.exe / htfuzzy.exe / htnotify.exe • htsearch.exe 25. DECUS-Symposium 3C05 / 4
Konfiguration • Alle Konfigurationsanweisungen sind von der Form <attribut>:<whitespace><wert><newline> • Zeilenfortsetzung mit \ am Zeilenende • Kommentare beginnen mit # • Generelle Konfigurations-Attribute database_dir bin_dirconfig_dir common_dirdatabase_baseword_list word_dbdoc_db doc_indexinclude 25. DECUS-Symposium 3C05 / 5
Konfiguration (Forts.) • Jedes Attribut kann als Variable benutzt werden, z.B. database_base: ${database_dir}/db • Definition von eigenen Attributen (zur Verwendung als Variablen) möglich • Unter OpenVMS ist für Pfadangaben sowohl Unix- als auch VMS-Syntax erlaubt • Einschränkungen: • $ in Pfadangaben müssen durch \ escaped werden • Auch wenn oben database_dir in VMS-Syntax gegeben sein sollte:Der / als Trennzeichen muß angegeben werden • external_parsers und pdf_parser müssen gültige VMS-Kommandos enthalten 25. DECUS-Symposium 3C05 / 6
Phase 1: Digging • htdig.exe • Sammeln von Dokumenten • Verfolgen von Links • Extrahieren von Wörtern • start_url(auch mehrere) • external_parsers / pdf_parser • Steuerung der Extraktion von Wörtern: localeextra_word_charactersminimum_word_length / maximum_word_lengthvalid_punctuationallow_numbersignore_alt_text 25. DECUS-Symposium 3C05 / 7
Phase 1: Digging (Forts.) • Gewichtung von Wörtern aus bestimmten Teilen von HTML-Dokumenten: description_factor (150)keywords_factor (100)title_factor (100)meta_description_factor (50)heading_factor_N (5,4,3,1,1,0) N=1..6text_factor (1) • Steuerung des Sammelns von Dokumenten: local_urls local_urls_onlylimit_urls_to exclude_urlsmax_hop_count server_max_docsvalid_extensions bad_extensions 25. DECUS-Symposium 3C05 / 8
Phase 1: Digging (Forts.) • Steuerung des Sammelns von Dokumenten (Forts.): • ROBOTS.TXT • <META> HTML-Tag: • <META NAME="name" CONTENT="wert"> • Erkannt und beachtet werden: • robots • htdig-noindex • [htdig-]keywords (-> keywords_meta_tag_names) • description (-> use_meta_description) 25. DECUS-Symposium 3C05 / 9
Phase 2: Merging • htmerge.exe • Merge von vorheriger Datenbank mit neuen Wörtern • Aufbau eines Datenbank-Index über alle Dokumente • htfuzzy.exe • Erzeugen von Extra-Datenbanken aus Dateien(z.B. für „common endings“-Algorithmus aus ispell-Dateien) • htnotify.exe • EMail-Benachrichtigung nach „Verfallsdatum“ eines HTML-Dokuments • gesteuert über spezielle <META> HTML-Tags: htdig-notification-datehtdig-emailhtdig-email-subject • außerdem diverse Konfigurations-Attribute 25. DECUS-Symposium 3C05 / 10
Phase 3: Searching • htsearch.exe • funktioniert sowohl als CGI-Programm als auch interaktiv • Parameterübergabe per Formular-Felder, u.a. • config : zu verwendende Konfigurationsdatei • words : zu suchende Wörter • keywords: zwingend erforderliche Wörter • format : Festlegen des Ausgabe-Templates • sort : [rev]score, [rev]time, [rev]title • method : and, or, boolean • restrict: Beschränken der gefundenen URLs • matchesperpage: Anzahl der angezeigten Treffer pro Ergebnisseite 25. DECUS-Symposium 3C05 / 11
Phase 3: Searching (Forts.) • allow_in_form • Beeinflussung der Suche u.a. durch search_algorithm backlink_factor (1000 * LinksIn/LinksOut)date_factor (0)startday / startmonth / startyearendday / endmonth / endyear • Die Ausgabe: Templates search_results_header / search_results_footersearch_results_wrappertemplate_mapnothing_found_filesyntax_error_file 25. DECUS-Symposium 3C05 / 12
Templates • Dateien mit HTML und Platzhalter-Variablen, z.B. Documents $(FIRSTDISPLAYED) - $(LASTDISPLAYED) of $(MATCHES) matches. • Verschiedene Ausprägungen • $(VAR) "normale" Ersetzung • $%(VAR) Escaped für Benutzung in einer URL z.B. <a href="/pfad/skript?seite=$%(URL)"> • $&(VAR) HTML-escaped z.B. <a href="$&(URL)">$&(URL)</a> • $=(VAR) dekodiertes URL-Encoding Format (?) • Select-Listen, auch benutzerdefiniert • vordefiniert: FORMAT, METHOD, SORT 25. DECUS-Symposium 3C05 / 13
Ein- und Ausgaben 25. DECUS-Symposium 3C05 / 14
ht://Dig unter OpenVMS • Voraussetzungen • OpenVMS Alpha 7.2 • Compaq TCP/IP Services - eine Emulation tut´s auch • eine Webserver-Software, die Executables ausführen kann(CSWS, WASD httpd, OSU httpd, Purveyor, ... jede eigentlich) • reichlich Plattenplatz • bei Verwendung der Quellen: • Compaq C 6.x • Compaq C++ 6.x • Compaq MMS 3.3 oder MadGoat MMK 3.9 25. DECUS-Symposium 3C05 / 15
ht://Dig unter OpenVMS (Forts.) • Distribution als selbstentpackendes PCSI-Kit • Installation: • $ RUN GNU-AXPVMS-HTDIG-V0301-6R1-1.PCSI-ZIP_AXPEXE • $ PRODUCT INSTALL HTDIG [/DESTINATION=pfad] • Verzeichnisstruktur: 25. DECUS-Symposium 3C05 / 16
ht://Dig unter OpenVMS (Forts.) • Weitere Dateien • SYS$COMMON:[SYS$STARTUP]HTDIG_STARTUP.COM • SYS$COMMON:[SYSMGR]HTDIG_CONFIG_DEFAULT.DAT • SYS$SPECIFIC:[SYSMGR]HTDIG_CONFIG.DAT • Logische Namen • HTDIG_ROOT PCSI$DESTINATION:[HTDIG.] • HTDIG_CONFIG_DIR HTDIG_ROOT:[CONF] • HTDIG_DEFAULT_CONFIG_FILE HTDIG_CONFIG_DIR:HTDIG.CONF • HTDIG_TEMP HTDIG_ROOT:[TEMP] • LIBDB_SHR HTDIG_ROOT:[BIN]LIBDB_SHR.EXE 25. DECUS-Symposium 3C05 / 17
ht://Dig unter OpenVMS (Forts.) • Post-Installation: • Kopieren von [.CGI-BIN]HTSEARCH.EXE in ein CGI-Verzeichnis • Kopieren von [.SEARCH]SEARCH.HTML (anpassen!) und [.IMAGE]*.* in Webserver-Verzeichnisse • Änderung der Zugriffsrechte von DB.DIR, [.COMMON]*.* und [.BIN]LIBDB_SHR.EXE derart, daß HTSEARCH.EXE unter dem Webserver-Account darauf Zugriff hat • $ @SYS$STARTUP:HTDIG_STARTUP.COM [CONFIG] • $ @SYS$STARTUP:HTDIG_STARTUP.COM [START] • Anpassen von HTDIG_CONFIG_DIR:HTDIG.CONF • $ @HTDIG_ROOT:[BIN]RUNDIG.COM /OUTPUT=RUNDIG.LOG -v -s • Test: Zugriff mit Browser auf SEARCH.HTML 25. DECUS-Symposium 3C05 / 18
ht://Dig unter OpenVMS: Ein Beispiel • Beispiel: ein Compaq CSC • Indizierung von OpenVMS 7.3 Dokumentation und Listings • Anpassung der htdig-Quellen zur besseren Erkennung von Text-Dokumenten, z.B. .LIS .SDL .H .MAR ... • je zwei Läufe • nach dem ersten Lauf Erstellen einer bad_word_list (Wörter, die nicht indiziert werden sollen) per Programm • Hardware: AlphaServer 8400 5/625 mit 6 CPUs • Daten des jeweils zweiten Laufes: 25. DECUS-Symposium 3C05 / 19
Die Konkurrenz • SWISH-E • „Simple Web Indexing System for Humans - Enhanced“ • Homepage: http://swish-e.org/ • OpenVMS-Binärdateien:http://wasd.vsm.com.au/wasd/swish*.zip • für Alpha und VAX • ursprünglich nur Filesystem-Indizierung, mittlerweile webfähig • Portierung von SWISH-E V1.1 war die Suchmaschine bei Process Software´s Purveyor • mittlerweile V2.0 • einfachere Konfiguration und höhere Indizierungsgeschwindigkeit, aber dafür eingeschränktere Funktionalität... 25. DECUS-Symposium 3C05 / 20
Links • Die OpenVMS-Distributionftp://ftp.pdv-systeme.de/vms/ undhttp://www.pdv-systeme.de/users/martinv/htdig/ gnu-axpvms-htdig-v0301-6r1-1.pcsi-zip_axpexe (4099 blocks) • Die Quellen des OpenVMS-Portsftp://ftp.pdv-systeme.de/vms/ undhttp://www.pdv-systeme.de/users/martinv/htdig/ htdig-3_1_6-vms-rel1-src.zip (9635 blocks) • Die Homepage des Originalshttp://www.htdig.org/ http://htdig.sourceforge.net/ 25. DECUS-Symposium 3C05 / 21
Fragen? Fragen? 25. DECUS-Symposium 3C05 / 22