Her zaman internet erişiminiz olmuyorsa, veya seyahatlerde yavaş kalıyorsa Wikipedia’yı bilgisayarınıza indirip kullanabilirsiniz. Temel avantajları şunlar:

  • Çok hızlı arama
  • Anahtar sözcük tabanlı arama
  • Arama birden fazla madde ile sonuçlanıyor, arasından seçebilirsiniz.
  • Matematik için LaTEX tabanlı veriler.
  • Sabit disk alanı en düşük seviyede, orijinal .bz2 dosyası (parçalara bölünmüş) artı Xapian üzerinden indeks.
  • MySQL ile karşılaştırıldığında çok hızlı kurulum.


Gerekenler:

Sayfalar ve maddeler dosyası; Şu an 2.9 Gb byüklüğünde ve buradan indirilebilir.

Bu dosya büyük bir XML dosyasından başka bir şey değil. SAX parser ile ayrıştırmak çocuk oyuncağı. “title” ve “text” elementlerine dikkat ediyoruz. Komut:
bash$ bzcat enwiki-20070802-pages-articles.xml.bz2 | head -10000 | \
grep -A 100 '

Ayrıştırmayı istediğimiz veriyi gösteriyor:

12

149030244
2007-08-03T23:24:05Z

Jacob Haller
164072

/* Four monopolies */
{{dablink|"Anarchist" redirects here. For the
comic book character, see [[Anarchist (comics)]].}} {{toolong}} {{disputed}}
{{Anarchism}} '''Anarchism''' is a [[political philosophy]] or group of
philosophies

/ && print $1.”\n”;’
done | ../quickstartindex

Xapian ile indeksleme işlemi, CPU gücünüze göre değişik vakitlerde gerçekleşebilir. Pentium4 3GHz ile 5 saat civarında sürmüş.

Xapian ile indekseleme biz “hızlı arama” örnek uygulaması sağladı. Bunu yapabiliriz:

bash$ ./quickstartsearch db/ greece
99% [rec00124enwiki-20070802-pages-articles.xml.bz2:Greece]
72% [rec00137enwiki-20070802-pages-articles.xml.bz2:Hellenic Greece]
72% [rec00465enwiki-20070802-pages-articles.xml.bz2:Argos, Greece]
72% [rec00468enwiki-20070802-pages-articles.xml.bz2:Marathon, Greece]
72% [rec00524enwiki-20070802-pages-articles.xml.bz2:Athens, Greece]
72% [rec00583enwiki-20070802-pages-articles.xml.bz2:Thebes, Greece]
...

Wiki’yi HTML formatında görüntülemek için ise woc.fslab.de nin yarattığı ayrıştırıcıyı kullanabiliriz. Onların kodu:

bash$ svn co http://fslab.de/svn/wpofflineclient/trunk/mediawiki_sa/ mediawiki_sa

Test:

bash$ cd mediawiki_sa
bash$ php5 testparser.php bonsai.wikimarkup > bonsai.html

Şimdi tüm yaptıklarımızı birleştiriyoruz, PErl veya Python veya benzeri ile olabilir. ÖRnek olarak Perl ile yapılmış bir script:

bash$ ./mywiki.pl
Usage: ./mywiki.pl keyword1 ...
bash$ ./mywiki.pl greece
0: (abort)
1: (99%) Greece
2: (72%) Hellenic Greece
3: (72%) Argos, Greece
4: (72%) Marathon, Greece
5: (72%) Athens, Greece
...
Select a number: 2
(firefox starts up, showing the generated HTML file)

Sonuç olarak gerekli geliştirici araçlarını (Python, Perl, Php, xapian ve django gibi) sağladıktan sonra, bu dosyayı indirmek yetecektir.

, , , ,