Ein Searchengine Setup mit Solr und Nutch

Ich wollte herausfinden ob und wie man mit Opensource Produkten eine Suchmaschine für eine Webseite aufbauen kann. Bei diesem Thema kommt man schnell auf Solr. Damit man dieser Suchengine auch etwas zum Finden geben kann braucht man einen Webcrawler der die gewünschten Webseiten durchsucht und sie Solr vorwirft. Hier scheint Nutch das Werkzeug der Wahl zu sein.

Basis für meinen ersten Test war diese zwei Tutorials 

Der Ablauf ist grob:
1. Installation und Konfiguration des Web Crawlers für die gewünschte Web Seite
2. Installation von Solr und Konfiguration einer Collection
3. Aufruf des Webcrawler so dass dieser seine Ergebnisse Solr übergibt.

Zuerst der Download und das Auspacken von Nutch

wget http://mirrors.ae-online.de/apache/nutch/1.7/apache-nutch-1.7-bin.tar.gz
tar xzvf apache-nutch-1.7-bin.tar.gz

Dann dien Basiskonfigurationsschritte - Wie nenne ich meinen Webcrawler und welche URLs oder Webseite möchte ich durchsuchen?

    cd apache-nutch-1.7
    vi conf/nutch-site.xml
        .....
                <configuration>
                    <property>
                         <name>http.agent.name</name>
                         <value>HB Nutch Spider</value>
                    </property>
                </configuration>
        .......
    mkdir urls
    vi urls/seed.txt
            /

    vi conf/regex-urlfilter.txt
            +^http://([a-z0-9]*\.)*www.hagen-bauer.de/

Das war der Webcrawler. Jetzt die Suchengine Solr

wget http://mirror.serversupportforum.de/apache/lucene/solr/4.6.0/solr-4.6.0.tgz
tar xzvf solr-4.6.0.tgz
mv solr-4.6.0/example/solr/collection1 solr-4.6.0/example/solr/hagen-bauer
vi solr-4.6.0/example/solr/hagen-bauer/core.properties     # Den Namen ändern
java -jar start.jar

    0    [main] INFO  org.eclipse.jetty.server.Server  - jetty-8.1.10.v20130312
    90   [main] INFO  org.eclipse.jetty.deploy.providers.ScanningAppProvider  - Deployment monitor /root/suchen/solr-4.6.0/example/contexts at interval 0
    113  [main] INFO  org.eclipse.jetty.deploy.DeploymentManager  - Deployable added: /root/suchen/solr-4.6.0/example/contexts/solr-jetty-context.xml

Dann kann man die admin console auf der dieser Addresse http://yourserver:8983/solr/#/ aufsuchen können

201312-solr-screen-1.pngDann der erste Crawl aufruf

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
bin/nutch crawl urls -depth 2 -topN 15 -solr http://127.0.0.1:8983/solr/hagen-bauer-de/

Indexer: finished at 2013-12-26 17:46:55, elapsed: 00:00:09
SolrDeleteDuplicates: starting at 2013-12-26 17:46:55
SolrDeleteDuplicates: Solr url: http://127.0.0.1:8983/solr/hagen-bauer-de/
SolrDeleteDuplicates: finished at 2013-12-26 17:46:56, elapsed: 00:00:01
crawl finished: crawl-20131226174450

201312-solr-screen-2.pngEin einfaches Suchinterface kann man an dieser Stelle aufrufen und erste Suchstichproben absetzten

http://yourserver:8983/solr/hagen-bauer-de/browse

201312-solr-screen-3.pngDas Ergebniss ist zwar noch nicht "schön und fertig" aber zumindestens steht der Webcrawler und man findet etwas. Wie man das ganze jetzt von Aussehen auf seine Wünsche anpasst ist die nächste Aufgabe