Insuma Tech FAQ
Diese FAQ-Liste ist geschrieben für die Experten in den IT-Abteilungen
der Insuma-Kunden sowie für die Integratoren der Insuma-Software.
Wie heißt der Insuma User-Agent?
Der Crawler der Insuma-Suchmaschine stellt sich selbst vor als:
InsumaScout/1.15
wobei 1.15 die aktuelle Versionsnummer angibt. Sie können dem
Insuma-Crawler mit Hilfe der robots.txt-Datei verbieten, gewisse
Verzeichnisse zu indizieren. Dies können Sie auch in Ihrem
Web-Autorensystem erledigen. Der Webserver setzt eine Umgebungsvariable
HTTP_USER_AGENT auf den Crawler-Namen.
Wie kann ich das Ranking beeinflussen (Scores)?
Der Ranking-Wert hat einen Fließkommawert zwischen 0 und 1. Die Werte sind
nur schlecht vorherzusagen, da die Werte sich je nach Installation, Wortkorpus
des Indexes, Anzahl der indizierten Dokumente, usw. unterscheiden.
Sie können die Ranking-Werte (auch "Scores" genannt) durch die Paramter
score_beta and score_theta der Konfigurationsdatei
manipulieren. Ein Wert score_theta von -5 ist wahrscheinlich die
beste Einstellung für alle Installationen. Regulieren sie score_beta
um einen Faktor 10 und beobachten Sie das abweichende Ranking-Verhalten.
Dieser Vorgang muss wiedrholt werden, bis sich ein zufreiden stellendes
Verhalten eingestellt hat.
Ich habe Parameter in der Konfigurationsdatei geändert, aber man sieht keine Veränderungen?
Wenn Sie eine Installation haben, die auf mod_python aufsetzt,
sollten Sie den HTTP-Daemon Prozess erneut starten, so dass die Konfiguration
erneut eingelesen werden kann.
Meine Website benutzt Java zur Navigation. Dabei werden nicht alle Seiten korrekt indiziert. Was muss ich tun?
Eine Java-Navigation kann dem Crawler Schwierigkeiten bereiten. Schalten Sie
dazu Java in Ihrem Browser aus, um zu sehen, wie der Crawler Ihre Webseiten
sieht. Wenn einige Ihrer webseiten oder ganze Bereiche unerreichbar sind,
so kann eines der folgenden Strategien helfen:
- Tragen Sie die unerreichbaren Webseiten in den Abschnitt StartURLs
Ihres Control-Centers ein,
- Verlinken Sie die unerreichbaren Webseiten in gwöhnlicher HTML-Manier,
so dass diese von Ihrer Start-Seite ohne Java erreicht werden,
- Erzeugen Sie eine Schatten-Seite auf Ihrer Website, die alle unerreichbaren
Webseiten auflistet und tragen diese Schatten-Seite als StartURL
in das Control-Center ein.
Warum wird ein Dokument auf meiner Website nicht gefunden?
Der Crawler startet von der Start URL aus, die Sie in das
Control-Center eingetragen haben. Dies ist sehr häufig die
Hauptseite Ihrer Website, z.B. http://www.meineseite.de/.
Stellen Sie bitte sicher, dass das fehlende Dokument von dort
erreichbar ist, d.h. Sie können Links von dort verfolgen, bis
Sie die Seite gefunden haben. Wenn dies nicht der Fall ist, so haben
Sie eine sogenannte Crawler-Tasche ("crawler pocket") auf Ihrer
Website.
Eine Crawler-Tasche ist eine Webseite oder eine Gruppe von Webseiten,
die nicht über HTTP 1.0 Links erreichbar sind. Dies ist der Fall,
wenn die Seiten nur von einem Pulldown-Auswahlmenü, einer Datenbank-Suche
oder einem Java-Applet aus erreichbar sind.
Fügen Sie bitte eine repräsentative URL aus dieser Crawler-Tasche in
das Control-Center unter Start URLs hinzu, so dass der Crawler
die Möglichkeit erhält, diese Seiten zu indizieren. Wenn die Dokumente
untereinander nicht verlinkt sind, müssen Sie alle fehlenden URLs
der Liste einzeln eintragen.
Einige Seiten tauchen mehrmals in den Suchergbnislisten auf. Was muss ich tun?
Seiten können mehrfach in der Ergbnisliste auftauchen, wenn Sie mit
verschiedenen CGI-Paramtern erreicht werden können, z.B.:
http://www.mysite.co.uk/mypage.asp?counter=234
http://www.mysite.co.uk/mypage.asp?counter=235
...
Jede unterschiedliche URL (inklusive aller CGI-Paramter) wird durch den
Crawler als seperate Seite angesehen. Zur selben Seite mit unterschiedlichen
CGI-Paramtern zurück zu gelangen, führt zu sogenannten Crawler-Schleifen
("crawler loop"), die unendlich sein kann (bis die Quota überschritten
ist). Eine der folgenden Aktionen schützen davor:
- Fügen Sie die variablen Paramter in den Abschnitt "Modify URL" in
das Control-Center ein. Indem Sie den Parameter löschen, erzwingen Sie,
dass die URLs als identisch angesehen werden. Sie werden nicht öfter als
einmal besucht.
-
Verbieten Sie diesen Bereich Ihrer Website durch einen Eintrag im
Abschnitt "Disallow URLs" des Control-Centers.
- Wenn Ihre Website ein Framework (Content Management System, CMS) benutzt,
um Seiten anzuzeigen, dann kann es sinnvoll sein, eine angepasste
Schnittstelle für den Crawler zu entwickeln. Kontaktieren Sie bitte hierzu den
Hersteller Ihres Frameworks.
Wenn Sie das Modul "Deduplizierung" bestellt haben, so können Sie es in
der Konfigurationsdatei crawler.conf aktivieren:
deduplicate_size = 0.03
deduplicate_diff = 0.02
Der Deduplizierungs-Algorithmus wird die Unterschiede zwischen einzelnen
Seiten überprüfen, und wird nachfolgende Seiten verwerfen, wenn sie den
selben oder ähnlichen Inhalte wie vorhergehende Seiten haben. Das obige
Beispiel stellt eine typische Konfiguration dar. Zunächst werden über die
Dokumentengröße (deduplicate_size) geeignete Kandidaten ausgewählt. Der
nächste Schritt - die eigentliche Überprüfung der inhaltlichen Unterschiede -
wird durch den Paramter deduplicate_diff reguliert.
Setzen Sie beide Paramter auf 0, um nur wirklich identische Dokumente
auszuschließen. Setzen Sie beide Paramter auf -1, um die Deduplizierung
abzuschalten.
Der Crawler muss erneut gestartet werden, damit sich die Veränderungen
auswirken können.
Die Reindizierung ist nicht inkrementell, sondern reindiziert immer wieder von Neuem. Wie kann ich dies abstellen?
Wenn Sie ein CGI-Skript benutzen, um die Inhalte anzuzeigen, dann stellen
Sie bitte sicher, dass Ihr Skript die "Last-Modified:"-Information des
HTTP-Headers zur Verfügung stellt. Sie können dies überprüfen, indem Sie mit
Hilfe Ihres Browsers die Seiteninformation (page information) eines Ihrer
Webseite betrachten (über das Browser-Menü). Das Datum kann von den
Datei-Attributen herrühren, von denen die Inhalte stammen, oder aber vom
"Last modification"-Datum der Datenbank, von wo die Inhalte stammen.
Wenn keine "Last-Modified:"-Information vorhanden ist, werdem immer wieder
alle Seiten vollständig neu gecrawlt.
Ein Dokument oder Seite erscheint in der Suchergebnisliste, obwohl es nicht mehr existiert. Wie kann ich dies korrigieren?
Sie müssen bis zum nächsten planmäßigen Re-Indizieren warten. Überprüfen
Sie die Einstellungen dazu in Ihrem Control-Center. Wenn die Dokumente auch
nach erneuter Re-Indizierung bestehen bleiben, so können Sie folgendes tun:
Wozu dienen die Gewichte im Control Center?
Die Gewichte beeinflussen die Reihenfolge (das "Ranking") der Dokumente in der
Suchergebnisliste. Sie können die gelieferte Einstellung in der Eegel
unangetastet lassen.
Wenn Sie z.B. Ergebnisse, welche im Original-Dokument gefunden wurden, in der
Ergbnisliste höher platzieren möchten als solche, die mit Hilfe der Morphologie
gefunden wurden, so können Sie die Gewichte wie folgt einstellen:
body: 100
body_morpho: 10
Oder Sie möchten Treffer im Titel (<title>) vor Treffern in der
Body-Umgebung (<body>) sehen, so
geben Sie folgendes ein:
title: 300
body: 100
Die Werte sind dabei als relativ zu allen anderen zu betrachten. Absolute
Zahlengrößen haben daher keine Bedeutung.
Normalerweise brauchen Sie keine Ganzzahl- oder String-Attribute zuregulieren,
wenn ein gewisser Wert für alle Ergebnisse gefordert ird, z.B. vip=1. Erst
wenn eine Suchanfrage verschiedene Bedingungen (conditions) miteinander
verknüpft, von der einige den Wert erfordern, andere nicht, ist die Gewichtung
der Attribute sinnvoll. Setze Sie den das Gewicht des Attributes vip 10-fach
höher als für das Attribut <body> um Ergbnisse höher zu platzieren,
welche dem VIP-Wert entsprechen.
Gewichtsänderungen zeigen sofortige Wirkung. Sie können unterschiedliche
Einstellungen in einem zweiten Fenster austesten.
Warum kann ich keine Wörter finden, die kürzer als 4 Buchstaben sind?
Standardmäßig werde nur Terme, die länger als 3 Buchstaben sind, indiziert.
Dies ist eine Standard-Einstellung für die Suche in einer großen Textmenge
mit generischem Lexikon. Wenn ihr Lexikon kürzere Terme enthält, die gefunden
werden sollen, so fügen Sie folgende Zeilen in Ihre MySQL-Konfigurationsdatei
(normalerweise my.cnf) hinzu:
# set the minimum word length for fulltext indexing
ft_min_word_len = 1
Die Änderungen wirken sich erst nach einer erneuten Re-Indizierung und Neustart
des MySQL-Daemons aus.
/etc/init.d/mysql restart
Wie kann ich die Profisuche installieren, um Terme auszuschließen, etc?
Die XML-Syntax erlaubt jede erdenkliche erweiterte Boolsche Anfrage. Bitte
schlagen Sie im Integrations-Tutorial sowie dem XML-Handbuch für weitere
Details und zugehörige formale DTDs nach. Unten zeigen wir Ihnen ein kurzes
Beispiel:
Negationen sollten immer in Verbindung mit dem Prädikat bmatch
benutzt werden:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE result SYSTEM "insuma_search_result.dtd">
<query max_results="10" start_from="1" show_attrs="title description">
<and>
<condition predicate='match' attr='body' value='John Lennon'/>
<condition predicate='bmatch' attr='body' value='John -Lennon'/>
</and>
</query>
Es ist wichtig, weiterhin das Prädikat match für das korrekte Ranking
zu benutzen, da bmatch lediglich binär sortiert (1 - Suchwort
vorhanden, 0 - nicht vorhanden).
Das Prädikat like wird gebraucht, um Wörter an Hand von Teilwörtern
zu finden. %uff% findet buffer, stuff, fluffy,
%uff findet stuff.
Wie gehe ich vor, um "exakte Phrasen" in der Ergebnisliste höher zu platzieren?
Wenn Sie den Namen "Günter Netzer" eingeben, möchten Sie diese sogenannte
"Phrase" (auch "Substring" genannt) an erster Stelle sehen, vor Dokumenten über
"Günter" oder "Netzer".
Füge Sie hierzu eine bmatch-Bedingung in Ihre XML-Anfrage hinzu,
die Sie mittels OR mit dem Rest verknüpfen. Mit bmatch können Sie
nach Phrasen suchen, welche durch Anführungszeichen gekennzeichnet werden.
Unten geben wir Ihnen die XML-Anfrage zu obigem Beispiel. Die XML-Anfrage
findet nur Dokumente mit exakter Phrase.
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE result SYSTEM "insuma_search_result.dtd">
<query max_results="10" start_from="1" show_attrs="title description">
<and>
<condition predicate='match' attr='body' value='Günter Netzer'/>
<condition predicate='bmatch' attr='body' value='"Günter Netzer"'/>
</and>
</query>
Wenn beide Wörter irgendwo im Dokument vorhanden sein sollen, so benutzen Sie
bitte wiederum bmatch:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE result SYSTEM "insuma_search_result.dtd">
<query max_results="10" start_from="1" show_attrs="title description">
<and>
<condition predicate='match' attr='body' value='Günter Netzer'/>
<condition predicate='bmatch' attr='body' value='+Günter
+Netzer'/>
</and>
</query>
Wie initialisiere ich die Suche innerhalb von Kategorien?
In Ihrer Suchform möchten Sie die Suche über gewisse Bereiche Ihrer
Website zur Verfügung stellen. Dies können die Bereiche "Aktuelle Nachrichten
- News", "Archiv", ein Mitgliederbereich sein, etc.
Dies können Sie durch das Index-Attribut category erreichen.
Wenn Sie Anfrage an die XML-Schnittstelle stellen, so können Sie die Suche
auf gewisse Bereiche Ihrer Website, d.h. Kategorien bzw. Gewisse Werte des
Attributs category beschränken. Ihre Suchform mag dazu Auswahlmenüs
oder Checkboxen zur Verfügung stellen. Das Standard-Kategorisierungs-Modul
erlaubt es, Kategorien auf 2 Arten zu definieren:
- Kategorien, die von URL-Masken abgeleitet werden. Dazu wird im
Control-Center ein URL matching substring eingegeben:
/path/category1/ My_category_1
http://www.mysite.com/path/category2/ Tourism
In diesem Fall wird der Crawler dem Attribut category des Dokuments
http://www.mysite.com/path/category2/museums.html
den Wert Tourism zuweisen, welches in der späteren Suchanfrage
weiter verwendet werden kann.
- Kategorien werden über Meta-Tags gesetzt. Dazu wird im Control-Center
folgendes eingegeben:
<META NAME=MODE CONTENT="category1"> My_category_name_1
<META NAME=MODE CONTENT="category2"> (Default category name: category2)
Verschiedene Werte für das Attribut category sind erlaubt.
Die Inhalte müssen nach jeder Änderung re-indiziert werden, damit die Änderungen
wirksam werden.
Respektiert der Insuma-Crawler robots Meta-Tags?
Ja, die formale Syntax lautet:
CONTENT="ALL | NONE | NOINDEX | INDEX| NOFOLLOW | FOLLOW"
default = empty = "ALL"
"NONE" = "NOINDEX, NOFOLLOW"
Das CONTENT-Feld ist eine durch Komma getrennte Liste:
- INDEX: Suchmaschinen-Crawler sollen diese Seite mit indizieren.
- FOLLOW: Crawler sollen Links von dieser zu weiteren Seiten verfolgen
dürfen.
- NOINDEX: Links dürfen verfolgt, die Seite wird jedoch nicht indiziert.
- NOFOLLOW: Die Seite darf indiziert werden, jedoch dürfen keine Links
verfolgt werden.
- NONE: Der Crawler ignoriert die Seite.
Beispiele:
<META NAME="ROBOTS" CONTENT="ALL">
<META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW">
<META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">
<META NAME="ROBOTS" CONTENT="NONE">
Was sind die Hardware-Anforderungen an die Insuma Suchsoftware?
Die Mimimal-Konfiguration ist:
- 1 GHz CPU Intel Celeron oder Athlon
- 40 GB Festplatte
- 1 GB Hauptspeicher
Sie mögen eine bessere Konfiguration in Betracht ziehen, um die Suche sowie
den Indizierungs-Prozess zu beschleunigen:
- Mehr Hauptspeicher wird die Suche beschleunigen.
- Ein Hardware-RAID wird die Suche beschleunigen.
- Eine leistungsfähigere CPU (oder zweite CPU) wird den Indizier- und
Cluster-Prozess beschleunigen.
- Fügen Sie weiter SCSI-Festplatten hinzu, wenn Sie viele verschiedene
Themen-Collections bei uns angemeldet haben. Dies wird den parallelen Zugriff
zu diesen beschleunigen.
Wo Sie €€€ sparen können:
Es ist weniger wichtig, von einer Celeron CPU zu einer "echten" Intel CPU
zu wechseln (diese ist lediglich von Nöten bei Multimedia- oder 3D-Anwendungen)
oder zu einer sehr großen Festplatte. Die Daumenregel besagt: Der Suchindex
nimmt in etwa so viel Platz ein wie der einfache zu indizierende Text selbst
(ohne Graphiken, Bilder und Formatierung).
Im Fall einer In-House Installation: Was passiert auf meinem Server während des Indizierungs-Prozesses?
Wenn die Re-Indizierung veranlasst worden ist (manuell vom Control-Center aus
oder automatisch auf reulärer Basis), so werden folgende Aktionen ausgeführt:
- Der Crawler startet, richtet eine HTTP-Verbindung zur Ziel-Website
ein, und lädt deren Webseiten in die Indexdatenbank (normalerweise MySQL).
Die Abstände der Downloads sowie deren zur Verfügung stehenden Bandbreiten
können in der Konfigurationsdatei geändert werden. Der Crawl-Prozess ist
innerhalb weniger Minuten bei kleinen Websites beendet und kann einge Stunden
in Anspruch nehmen bei größeren Web-Portalen.
- Die herunter geladenen Webseiten werden analysiert (Parsing), Attribute
werden extrahiert und dem Index hinzu gefügt. Die CPU-Last kann jetzt sehr hoch
sein, obwohl die Software ungenutzte CPU-Zeiten nutzt sowie anderen
interaktiven Prozessen den Vorrang lässt (z.B. dem HTTP-Server oder dem
Suchdienst selbst).
- Die Festplatte wird für den Suchindex (ständig) benötigt. Ein Teil der
Festplatte wird für temporäre Auslagerungsdateien zur Zeit des Re-Indizierens
benötigt. Ein Beispiel eines temporären Festplatten-Verbrauchs sind
PDF-Dokumente. Der Cralwer lädt ein PDF-Dokument und speichert es für einen
Moment bevor es dem PDF-Parser zur Analyse bereit gestellt wird. Die Größe des
temporären Festplattenspeichers (Cache) kann reguliert werden. Die Daumenregel
besagt, dass der Suchindex in etwa so viel Platz einnimmt wie der einfache zu
indizierende Text selbst (ohne Graphiken, Bilder und Formatierung).
- Zum Schluss der Re-Indizierung wird der Index auf Geschwindigkeit optimiert.
Nur die Ressourcen (Cache, Speicher, ...) der Backend-Datenbank (normalerweise
MySQL) werden dazu benutzt, in Übereinstimmung mit den vorgenommenen
Einstellungen.
- Fertig. Der Indexer löst alle Speicher-, CPU- und Festplatten-Ressourcen.
Die Suchmaschine bedient nun ausschließlich Suchanfragen.
Wie kann ich ausgewählte Ergebnisse in der Ergebnisliste nach oben schieben
(Boosting)?
Dazu gibt es in der XML-Schnittstelle eine sogenannte "Boost"-Regel. Sehen
Sie dazu das Beispiel:
<query max_results="10" start_from="1" show_attrs="title relevance">
<condition attr="body" predicate="match" value="Synthese"/>
<condition attr="relevance" predicate="ge" value="0"/>
<boost predicate="eq" attr="relevance" value="2" coef="0.4"/>
<boost predicate="eq" attr="relevance" value="1" coef="0.2"/>
<query>
Es werden durch die Regel Dokumente in der Ergbnisliste nach oben befördern,
welche der Bedingung entsprechen. Im obigen Beispiel werden Dokument mit einer
Relevanz gößer oder gleich 0 in der Ergbnisliste präsentiert. Von diesen werden
die Dokumente mit einer Relevanz von 2 oder 1 um die Koeffizienten 0.4 oder 0.2
höher gewichtet (boosting).
Ein Boosten mit dem Koeffizienten 0.4 bedeutet dabei, dass das Ranking-Ergebnis
(score) des zu boostenden Dokuments um 0.4 höher gewichtet als das des best
platzierten (top score) Dokuments (d.h. das Dokument, das vor dem Boosten das
beste Ranking hat).
|