Nutch dan Solr

Membangun Search Engine Sendiri dengan Open Source
2 Nopember 2011 Bowo Prasetyo http://www.scribd.com/prazjp http://www.slideshare.net/bowoprasetyo/

Prasyarat

Tutorial ini menggunakan software berikut:

Unix-like OS

GNU/Linux (http://www.gnu.org/distros/commondistros.html) Cygwin (http://www.cygwin.com/)

  

Java 1.6 (http://java.com/) Nutch 1.3 (http://nutch.apache.org/) Solr 3.4.0 (http://lucene.apache.org/solr/)

Mesin Penjelajah Nutch

Nutch adalah
  

Software penjelajah web (web crawler) Open source Berfitur lengkap, dengan fungsi spesifik web:
 

database link-graph, parser untuk HTML dan format dokumen lainnya, dll.

Mesin Penjelajah Nutch

Nutch 1.3 didesain untuk bekerjasama dengan:
 

Solr, platform pencari enterprize yang dibangun di atas Lucene Java, dan Hadoop, framework software yang mendukung aplikasi terdistribusi yang intensif data.

Arsitektur Nutch
Url bibit Searcher inject Segments generate invertlinks index CrawlDB updatedb fetch & parse Crawler LinkDB Index

Solr

Siklus penjelajahan

Arsitektur Nutch – Komponen
 

Url bibit: daftar url untuk mengisi CrawlDB pertama kali. CrawlDB: database yang berisi semua url baik yang sudah difetch maupun belum. Segments: terdiri dari segmen-segmen, yaitu database yang berisi satu set url-url (yang difetch sebagai satu kesatuan), konten (raw/parsed), outlink dll. LinkDB: database yang berisi daftar link (yang diketahui) ke setiap url.

Arsitektur Nutch – Komponen

Crawler/fetcher: program untuk merequest halaman web, memparse konten dan mengekstrak link darinya. Solr, platform pencari enterprize yang berisi:  Searcher: program untuk menemukan dokumen berdasarkan query.  Index: database yang berisi indeks dari
CrawlDB, Segments dan LinkDB.

Arsitektur Nutch – Alur Proses
1. inject: Url bibit diinject ke dalam database

CrawlDB. 2. generate: Segmen baru yang akan difetch, digenerate dari CrawlDB ke dalam database Segments. 3. fetch & parse: Crawler memfetch halaman web segmen, kontennya diparse dan disimpan kembali ke dalam segmen tersebut. 4. updatedb: CrawlDB diupdate dengan url-url baru dari segmen yang sudah difetch. 5. Lakukan 2~4 berulang-ulang sesuai keperluan.

Arsitektur Nutch – Alur Proses
6.invertlinks: Link dari segmen yang

sudah difetch dan diparse, diinvert ke dalam database LinkDB. 7.index: Solr mengindeks database CrawlDB, Segments dan LinkDB ke dalam database Index. 8. Searcher Solr melakukan pencarian terhadap indeks.

Penjelajahan dengan Nutch
Penjelajahan Sederhana

Penginstallan Nutch

Yang diperlukan:
  

Java 1.6.x-up, baik yang berasal dari Sun atau IBM. Kapasitas disk skala gigabyte atau lebih Koneksi internet kecepatan tinggi

Download distribusi binari Nutch 1.3. http://nutch.apache.org/

Penginstallan Nutch

Penginstallan  Unzip distribusi binari Nutch ke $HOME/nutch-1.3 ← <NUTCH_HOME>  Set JAVA_HOME=<path_to_jre_or_jdk> Cek program Nutch dengan
 

cd <NUTCH_HOME>/runtime/local ← <NUTCH_RUNTIME_HOME> bin/nutch

Penginstallan Nutch

Akan ditampilkan petunjuk penggunaan:
crawl readdb convdb mergedb readlinkdb inject generate freegen fetch ... one-step crawler for intranets read / dump crawl db convert crawl db from pre-0.9 format merge crawldb-s, with optional filtering read / dump link db inject new urls into the database generate new segments to fetch from crawl db generate new segments to fetch from text files fetch a segment's pages

Usage: nutch [-core] COMMAND where COMMAND is one of:

File Konfigurasi
 

<urls>/<plain>: url bibit conf/regex-urlfilter.txt: penyaring url conf/nutch-site.xml:
 

User agent Proxy

URL Bibit (urls/id.txt)
http://www.bppt.go.id/ http://www.batan.go.id/ http://www.lipi.go.id/ http://www.ristek.go.id/ http://www.pom.go.id/ : : :

Penyaring (conf/regexurlfilter.txt)
# # # # Each non-comment, non-blank line contains a regular expression prefixed by '+' or '-'. The first matching pattern in the file determines whether a URL is included or ignored. If no pattern matches, the URL is ignored. # skip file:, ftp:, & mailto: urls -^(file|ftp|mailto): # skip image and other suffixes we can't yet parse -\.(gif|GIF|jpg|JPG|ico|ICO|css|sit|eps|wmf|zip|ppt|mpg|xls|gz|rpm|tgz| mov|MOV|exe|png|PNG)$ # skip URLs containing certain characters as probable queries, etc. # -[?*!@=] # accept hosts in MY.DOMAIN.NAME +^http://([a-z0-9]*\.)*id/ # skip everything else -.

User Agent (conf/nutchsite.xml)
<property> <name>http.agent.name</name> <value>BPPT PTIK</value> <description>BPPT PTIK</description> </property> <property> <name>http.agent.description</name> <value>BPPT - Nutch experiment</value> <description> BPPT - Nutch experiment </description> </property>

Proxy (conf/nutchsite.xml)
<property> <name>http.proxy.host</name> <value>192.73.25.1</value> <description>The proxy hostname.</description> </property> <property> <name>http.proxy.port</name> <value>8080</value> <description>The proxy port.</description> </property>

Penjelajahan Sederhana
 

Penjelajahan sederhana dilakukan dengan perintah bin/nutch crawl Perintah crawl akan melakukan alur proses berikut secara otomatis:
    

inject generate fetch & parse updatedb invertlinks

Diulang-ulang sebanyak depth

Penjelajahan Sederhana
bin/nutch crawl <urls> -dir <crawldir> -depth d -topN n

   

<urls>: direktori url bibit <crawldir>: direktori hasil penjelajahan d: kedalaman penjelajahan n: jumlah halaman maksimal di setiap level

Penjelajahan Sederhana

Akan dihasilkan direktori berikut:
  

<crawldir>/crawldb <crawldir>/segments <crawldir>/linkdb bin/nutch readdb <crawldir>/crawldb -stats

Cek hasil penjelajahan dengan:

Penjelajahan Sederhana

Akan ditampilkan statistik seperti berikut:
1172 1168 4 0.0 0.012825939 1.095

CrawlDb statistics start: crawldir2/crawldb Statistics for CrawlDb: crawldir2/crawldb TOTAL urls: retry 0: retry 1: min score: avg score: max score:

Penjelajahan Sederhana
status 1 (db_unfetched): status 2 (db_fetched): status 3 (db_gone): status 4 (db_redir_temp): status 5 (db_redir_perm): CrawlDb statistics: done 968 171 12 8 13

Pencarian dengan Solr

Penginstallan Solr
 

Download distribusi binari Solr dari http://lucene.apache.org/solr/ Unzip distribusi Solr ke $HOME/apachesolr-3.X ← <SOLR_HOME> Coba program Solr dengan:  cd <SOLR_HOME>/example  java -jar start.jar  Buka http://localhost:8983/solr/admin/

Penginstallan Solr

Nutch – Solr Integration

Copy schema.xml Nutch ke Solr

cp <NUTCH_RUNTIME_HOME>/conf/sche ma.xml <SOLR_HOME>/example/solr/conf/ cd <SOLR_HOME>/example/ (Kill start.jar) java -jar start.jar

Restart Solr
  

Nutch – Solr Integration

Run Solr Index command

bin/nutch solrindex http://127.0.0.1:8983/solr/ <crawldir>/crawldb <crawldir>/linkdb <crawldir>/segments/*
 

SolrIndexer: starting at 201111-02 11:46:53 SolrIndexer: finished at 201111-02 11:47:01, elapsed: 00:00:07

Nutch – Solr Integration
 

Cek hasil indexing, buka http://localhost:8983/solr/admin/stats.jsp Cek di bawah tabel Core → name: Searcher → stats: numDocs harus bernilai lebih dari 0.

Nutch – Solr Integration

Pencarian dengan Solr
 

 

Buka http://localhost:8983/solr/admin/ Di dalam tabel Make a Query → Query String: ... masukkan kata kunci mis. bppt Klik Search By default, hasil pencarian akan dikembalikan dalam format XML.

Pencarian dengan Solr

Pencarian dengan Solr

Membuat Konten Terlihat

Default schema.xml akan membuat halaman web dapat dicari, tetapi kontennya tidak dapat dilihat. Untuk membuat konten terlihat, modifikasi field content pada schema.xml menjadi:

<field name="content" type="text" stored="true" indexed="true"/>

Membuat Konten Terlihat

Restart Solr
  

cd <SOLR_HOME>/example/ (Kill start.jar) java -jar start.jar bin/nutch solrindex http://127.0.0.1:8983/solr/ <crawldir>/crawldb <crawldir>/linkdb <crawldir>/segments/*

Run Solr Index command

Membuat Konten Terlihat

Membuat Konten Terlihat

Referensi

NutchTutorial http://wiki.apache.org/nutch/NutchTutorial

Master your semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master your semester with Scribd & The New York Times

Cancel anytime.