Aus Linux-Magazin 02/2016

Im Eigenbau: Ein indizierender Suchmaschinenserver im Firmennetz (Seite 2)

Das Beispiel in Listing 2 demonstriert, wie sich der Name des HTTP-Agent konfigurieren lässt. Mit dieser Kennung hinterlässt der Crawler seine Spuren in den Logfiles des Webservers. Anhand solcher Agent Names kann ein Admin derlei Einträge gegebenenfalls auch ausfiltern oder weiterverarbeiten.

In »nutch-default.xml« finden sich zahlreiche Einstellungen, die das Verhalten des Crawlers steuern, so auch das Pendant zum oben für Solr erwähnten Aktivieren des Caching. In »nutch-site.xml« erledigt das:

<property>
  <name>file.content.ignored</name>
  <value>false</value>
</property>

Außerdem soll Nutch alle Dokumente, die Anwender in der Zwischenzeit gelöscht haben, auch aus der Datenbank der Suchmaschine entfernen:

<property>
  <name>db.update.purge.404</name>
  <value>true</value>
</property>

Im lokalen Netz, wo es im Vergleich zum Internet nur wenige Server und Clients gibt, führen die 5 Sekunden Defaulteinstellung bei der Wartezeit zwischen zwei Anfragen an denselben Server zu einer unnötig hohen Anzahl inaktiver Threads und bremsen die Suchmaschine deutlich aus, wenn beispielsweise nur ein Server zu indizieren ist. Der Parameter »fetcher.server.delay« ist geeignet sicherzustellen, dass die Suchmaschine dennoch keinen Server mit Anfragen überlastet:

<property>
  <name>fetcher.server.delay</name>
  <value>0.0</value>
</property>

Es empfiehlt sich, diesen Wert zu deaktivieren und ihn erst wieder zu ändern, wenn Probleme auftreten.

Listing 2

nutch-site.xml

01 <?xml version="1.0"?>
02 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
03 <!-- Put site-specific property overrides in this file. -->
04   <configuration>
05     <property>
06        <name>http.agent.name</name>
07        <value>Company Search Agent</value>
08     </property>
09   </configuration>

Große Dokumente

Innerhalb des Intranets ist es möglich und oft sinnvoll, große Dokumente zu indizieren. Nutch unterstützt dieses Anliegen mit den Parametern der »content.limit« -Klasse, welche die Maximalgröße des Inhalts definiert, die der Crawler verarbeitet (Listing 3). Auch die Länge des Dokumenten-Titels lässt sich definieren, etwa um eine informativere Darstellung in den Suchergebnissen zu erreichen – hier nicht in Byte, sondern in Zeichen:

<property>
  <name>indexer.max.title.length</name>
  <value>150</value>
</property>

Eine weitere nützliche Variable ist »fetcher.threads.fetch« , die die Anzahl gleichzeitig laufender Threads definiert, die Inhalte einlesen. »http.timeout« verringert die Zeit, die der Thread auf den Timeout einer Anfrage wartet.

Listing 3

Dateilängen

01 <property>
02   <name>file.content.limit</name>
03   <value>131072</value>
04 </property>
05 <property>
06   <name>http.content.limit</name>
07   <value>131072</value>
08 </property>
09 <property>
10   <name>ftp.content.limit</name>
11   <value>131072</value>
12 </property>

Auf dem Index

Wer dem Suchmaschinenserver den Zugriff aufs Internet sperrt, etwa weil er Wikipedia nicht auch indiziert haben möchte, kann den Zugriff via Firewall unterbinden, sollte aber den HTTP-Timeout sehr kurz einstellen. Der Suchserver wird ja externe URLs in den Dokumenten finden, aber seine Verbindungsversuche scheitern, und der Timeout bestimmt, wie lange das dauert. Der Crawler findet zwar weiterhin externe URLs, erreicht sie aber nicht und nimmt sie darum nicht in seine Datenbank auf.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben