Lucene. Diambil dari situs resminya di http://lucene.apache.org/core, merupakan sebuah pustaka mesin pencari text (text search engine library) yang kaya akan fitur yang ditulis seluruhnya dengan bahasa pemrograman Java. Masih menurut informasi yang terdapat pada situs resminya, bila pustaka ini sangat cocok digunakan pada program-program yang memerlukan fasilitas pencarian teks yang lengkap. Juga, pustaka ini telah di-port ke beberapa bahasa pemrograman lain seperti Python hingga memungkinkan para programmer non Java untuk menggunakanya walaupun masih perlu untuk meng-install JDK pada mesinya.
DHOCNETADS
Nah, kebetulan, saya saat ini sedang ingin melakukan sesuatu dengan beberapa file yang menurut beberapa sumber, untuk dapat mengaksesnya, saya harus menggunakan pustaka Lucene. Dan karena saya lebih familiar dengan Python (dan karena saya juga bukan seorang programmer, :D), jadinya saya putuskan untuk meng-install Lucene yang di-port untuk Python. Mari, kita langsungkan saja pada proses instalasinya.
Sebelumnya, pastikan dulu bila paket apache-ant, pysetuptools, dan JDK sudah terinstall di sistem. Cek dengan perintah:
# ls /var/log/packages/ | grep apache apache-ant-1.8.4-noarch-1_SBo $ ls /var/log/packages/ | grep pysetuptools pysetuptools-0.6c11-i486-1_SBo # ls /var/log/packages/ | grep jdk jdk-7u9-i586-1_SBo |
Bila ketiga paket diatas belum ter-install, silahkan lakukan instalasi terlebih dahulu. Saya menggunakan build script dari slackbuilds.org yang bisa didapat di http://slackbuilds.org/repository/14.0/development/apache-ant untuk apache-ant, http://slackbuilds.org/repository/14.0/python/pysetuptools untuk pysetuptools, dan http://slackbuilds.org/repository/14.0/development/jdk untuk JDK. Seperti yang sudah saya sebutkan di atas bila alamat tersebut hanya menyediakan build script saja. Sedangkan paket programnya tetap berada pada situs masing-masing pengembang.
Khusus untuk paket JDK, silahkan ambil paketnya di http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-linux-i586.tar.gz untuk 32bit dan http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-linux-x64.tar.gz untuk 64bit (saya menggunakan versi lama karena malas upgrade - internet lemot :P). Bila link diatas tidak bekerja, silahkan proses secara manual di http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html. Untuk paket apache-ant dan pysetuptools, link paket program tersedia pada halaman yang telah disebutkan. Proses instalasi ketiga paket, silahkan merujuk pada file README yang yang disertakan pada paket build script. Hehehe,.. :P
Ok. Saya anggap semuanya berjalan lancar dan mari menuju pada proses instalasi pustaka PyLucene. Download paket PyLucene dari http://www.apache.org/dyn/closer.cgi/lucene/pylucene atau dari http://www.globalish.com/am/lucene/pylucene.
Setelah proses download selesai, buka terminal emulator dan arahkan ketempat dimana paket pylucene-4.3.0-1-src.tar.gz tersimpan lalu ekstrak dengan perintah tar.
$ ls -l total 44520 -rw-rw-rw- 1 root root 3851 Jan 15 23:13 KEYS -rw-rw-rw- 1 root root 45532165 May 15 09:20 pylucene-4.3.0-1-src.tar.gz $ tar xfvz pylucene-4.3.0-1-src.tar.gz ... ... ... pylucene-4.3.0-1/java/org/apache/pylucene/analysis/PythonTokenFilter.java pylucene-4.3.0-1/java/org/apache/pylucene/analysis/PythonTokenizer.java pylucene-4.3.0-1/java/org/apache/pylucene/analysis/PythonTokenStream.java $ |
Kemudia pindah direktori aktif ke direktori hasil ekstrak PyLucene.
$ cd pylucene-4.3.0-1 |
Sekarang saatnya building dan instalasi. Pada proses ini saya menggunakan panduan yang terdapat pada situs resmi PyLucene yang beralamat di http://lucene.apache.org/pylucene/install.html. Mari kita saksikan, :D
Sebelum dapat melakukan instalasi pustaka PyLucene, terlebih dahulu kita lakukan instalasi paket JCC. Jalankan perintah pushd jcc.
$ pushd jcc /mnt/pub/res/pkg/devel/pylucene/pylucene-4.3.0-1/jcc /mnt/pub/res/pkg/devel/pylucene/pylucene-4.3.0-1 |
Edit file setup.py untuk menyesuaikan environment sistem. Oh iya, sebelumnya, pastikan dulu bila kamu sudah mengetahui dimana binari java (JDK) terinstall. Untuk memastikanya, gunakan perintah wich atau locate.
$ which java /usr/lib/java/bin/java $ su -c updatedb Password: $ locate java | grep bin/java /usr/lib/jvm/jre/bin/java /usr/lib/jvm/bin/javah /usr/lib/jvm/bin/javac /usr/lib/jvm/bin/java /usr/lib/jvm/bin/javadoc /usr/lib/java/bin/javadoc /usr/lib/java/bin/javafxpackager /usr/lib/java/bin/javaws /usr/lib/java/bin/javah /usr/lib/java/bin/java-rmi.cgi /usr/lib/java/bin/javac /usr/lib/java/bin/javap /usr/lib/java/bin/java /usr/lib/java/jre/bin/javaws /usr/lib/java/jre/bin/java_vm /usr/lib/java/jre/bin/java $ |
DHOCNETADS
Untuk proses editing, disini saya menggunakan nano sebagai editornya.
Perhatikan pada blok komentar kedua yang terlihat seperti berikut:
Temukan baris JDK:
Rubah baris 'linux2' menjadi '/usr/lib/java' yang terlihat seperti berikut:
Tekan [CTRL]+o untuk menyimpan kemudian [CTRL]+x untuk menutup editor. Kemudian jalankan build setup dan install bila berhasil.
DHOCNETADS
$ nano setup.py |
Perhatikan pada blok komentar kedua yang terlihat seperti berikut:
# Add or edit the entry corresponding to your system in the JDK, INCLUDES, # CFLAGS, DEBUG_CFLAGS, LFLAGS and JAVAC dictionaries below. # These entries are used to build JCC _and_ by JCC to drive compiling and # linking via distutils or setuptools the extensions it generated code for. # # The key for your system is determined by the platform variable defined # above. # # Instead of editing the entries below, you may also override these # dictionaries with JCC_JDK, JCC_INCLUDES, JCC_CFLAGS, JCC_DEBUG_CFLAGS, # JCC_LFLAGS and JCC_JAVAC environment variables using os.pathsep as value # separator. |
Temukan baris JDK:
JDK = { 'darwin': JAVAHOME, 'ipod': '/usr/include/gcc', 'linux2': '/usr/lib/jvm/java-7-openjdk-amd64', 'sunos5': '/usr/jdk/instances/jdk1.6.0', 'win32': JAVAHOME, 'mingw32': JAVAHOME, 'freebsd7': '/usr/local/diablo-jdk1.6.0' } |
Rubah baris 'linux2' menjadi '/usr/lib/java' yang terlihat seperti berikut:
JDK = { 'darwin': JAVAHOME, 'ipod': '/usr/include/gcc', 'linux2': '/usr/lib/java', 'sunos5': '/usr/jdk/instances/jdk1.6.0', 'win32': JAVAHOME, 'mingw32': JAVAHOME, 'freebsd7': '/usr/local/diablo-jdk1.6.0' } |
Tekan [CTRL]+o untuk menyimpan kemudian [CTRL]+x untuk menutup editor. Kemudian jalankan build setup dan install bila berhasil.
$ python setup.py build Applied shared mode monkey patch to: Loading source files for package org.apache.jcc... Constructing Javadoc information... Standard Doclet version 1.7.0_09 Building tree for all the packages and classes... Generating javadoc/org/apache/jcc/PythonException.html... Generating javadoc/org/apache/jcc/PythonVM.html... ... ... ... ... build/temp.linux-i686-2.7/_jcc/java/lang/reflect/Constructor.o build/temp.linux-i686-2.7/_jcc/java/lang/reflect/GenericDeclaration.o build/temp.linux-i686-2.7/_jcc/java/lang/reflect/Type.o -L/usr/lib -lpython2.7 -o build/lib.linux-i686-2.7/jcc/_jcc.so -L/usr/lib/java/jre/lib/i386 -ljava -L/usr/lib/java/jre/lib/i386/client -ljvm -Wl,-rpath=/usr/lib/java/jre/lib/i386:/usr/lib/java/jre/lib/i386/client -Wl,-S $ |
$ su -c 'python setup.py install' Password: |
DHOCNETADS
Bila saat proses instalasi kamu mendapati error seperti berikut:
Login sebagai root, kemudian tambahkan path /usr/lib/java/bin pada env PATH dengan perintah export.
Coba jalankan lagi perintah install seperti diatas (masih sebagai root).
Ok. Sekarang saatnya instalasi pustaka PyLucene. Jalankan perintah popd.
Seperti diatas, lakukan editing pada file Makefile untuk menyesuaikan environment.
Temukan blok kode berikut:
Hilangkan tanda # (komentar) pada awal baris kode dan rubah baris ke-empat yang sebelumnya tertulis "ANT=JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 /usr/bin/ant" hingga menjadi seperti ini:
Tekan [CTRL]+o kemudian [CTRL]+x lalu jalankan perintah make.
Oh iya, pada saat proses build diatas, pastikan bila komputer sedang terhubung dengan internet karena saat proses build, ada beberapa paket kecil yang dibutuhkan yang tidak ada dalam paket sumber dan akan di download secara otomatis.
Bila telah berhasil seperti diatas, sekarang jalankan perintah make install untuk melakukan instalasi.
Nah, beres!
Sekarang mari kita coba, :D
Dan,... dan,... dan,... kemudian,... saya masih belum tau bagaimana cara menggunakanya! Hehehe,... :P
$ su -c 'python setup.py install' Password: Applied shared mode monkey patch to: Traceback (most recent call last): File "setup.py", line 382, in main('--debug' in sys.argv) File "setup.py", line 327, in main raise type(e), "%s: %s" %(e, args) OSError: [Errno 2] No such file or directory: ['javac', '-d', 'jcc/classes', 'java/org/apache/jcc/PythonVM.java', 'java/org/apache/jcc/PythonException.java'] $ |
Login sebagai root, kemudian tambahkan path /usr/lib/java/bin pada env PATH dengan perintah export.
# export PATH="$PATH:/usr/lib/java/bin" # echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/lib/java/bin # |
Coba jalankan lagi perintah install seperti diatas (masih sebagai root).
# python setup.py install Applied shared mode monkey patch to: Loading source files for package org.apache.jcc... Constructing Javadoc information... Standard Doclet version 1.7.0_09 Building tree for all the packages and classes... ... ... ... Installed /usr/lib/python2.7/site-packages/JCC-2.16-py2.7-linux-i686.egg Processing dependencies for JCC==2.16 Finished processing dependencies for JCC==2.16 # |
Ok. Sekarang saatnya instalasi pustaka PyLucene. Jalankan perintah popd.
# popd /mnt/pub/res/pkg/devel/pylucene/pylucene-4.3.0-1 |
Seperti diatas, lakukan editing pada file Makefile untuk menyesuaikan environment.
# nano Makefile |
Temukan blok kode berikut:
# Linux (Ubuntu 11.10 64-bit, Python 2.7.2, OpenJDK 1.7, setuptools 0.6.16) # Be sure to also set JDK['linux2'] in jcc's setup.py to the JAVA_HOME value # used below for ANT (and rebuild jcc after changing it). #PREFIX_PYTHON=/usr #ANT=JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 /usr/bin/ant #PYTHON=$(PREFIX_PYTHON)/bin/python #JCC=$(PYTHON) -m jcc --shared #NUM_FILES=8 |
Hilangkan tanda # (komentar) pada awal baris kode dan rubah baris ke-empat yang sebelumnya tertulis "ANT=JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 /usr/bin/ant" hingga menjadi seperti ini:
# Linux (Ubuntu 11.10 64-bit, Python 2.7.2, OpenJDK 1.7, setuptools 0.6.16) # Be sure to also set JDK['linux2'] in jcc's setup.py to the JAVA_HOME value # used below for ANT (and rebuild jcc after changing it). PREFIX_PYTHON=/usr ANT=JAVA_HOME=/usr/lib/java /usr/bin/ant PYTHON=$(PREFIX_PYTHON)/bin/python JCC=$(PYTHON) -m jcc --shared NUM_FILES=8 |
Tekan [CTRL]+o kemudian [CTRL]+x lalu jalankan perintah make.
# make cd lucene-java-4.3.0/lucene; (JAVA_HOME=/usr/lib/java /usr/bin/ant ivy-fail || JAVA_HOME=/usr/lib/java /usr/bin/ant ivy-bootstrap) Buildfile: /mnt/pub/res/pkg/devel/pylucene/pylucene-4.3.0-1/lucene-java-4.3.0/lucene/build.xml ... ... ... build/temp.linux-i686-2.7/build/_lucene/__wrap03__.o -L/usr/lib/python2.7/site-packages/JCC-2.16-py2.7-linux-i686.egg -L/usr/lib -ljcc -lpython2.7 -o build/lib.linux-i686-2.7/lucene/_lucene.so -L/usr/lib/java/jre/lib/i386 -ljava -L/usr/lib/java/jre/lib/i386/client -ljvm -Wl,-rpath=/usr/lib/java/jre/lib/i386:/usr/lib/java/jre/lib/i386/client -Wl,-S -Wl,-rpath /usr/lib/python2.7/site-packages/JCC-2.16-py2.7-linux-i686.egg build of complete # |
Oh iya, pada saat proses build diatas, pastikan bila komputer sedang terhubung dengan internet karena saat proses build, ada beberapa paket kecil yang dibutuhkan yang tidak ada dalam paket sumber dan akan di download secara otomatis.
Bila telah berhasil seperti diatas, sekarang jalankan perintah make install untuk melakukan instalasi.
# make install ... ... ... Installed /usr/lib/python2.7/site-packages/lucene-4.3.0-py2.7-linux-i686.egg Processing dependencies for lucene==4.3.0 Finished processing dependencies for lucene==4.3.0 # |
Nah, beres!
Sekarang mari kita coba, :D
$ python Python 2.7.3 (default, Jul 3 2012, 21:16:07) [GCC 4.7.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import lucene >>> dir(lucene) ['CLASSPATH', 'ConstVariableDescriptor', 'FinalizerClass', 'FinalizerProxy', 'InvalidArgsError', 'JArray', 'JArray_bool', 'JArray_byte', 'JArray_char', 'JArray_double', 'JArray_float', 'JArray_int', 'JArray_long', 'JArray_object', 'JArray_short', 'JArray_string', 'JCCEnv', 'JCC_VERSION', 'JObject', 'JavaError', 'PrintWriter', 'StringWriter', 'VERSION', '__builtins__', '__dir__', '__doc__', '__file__', '__name__', '__package__', '__path__', '_lucene', 'findClass', 'getVMEnv', 'initVM', 'makeClass', 'makeInterface', 'os', 'sys'] >>> lucene.VERSION '4.3.0' >>> |
Dan,... dan,... dan,... kemudian,... saya masih belum tau bagaimana cara menggunakanya! Hehehe,... :P
DHOCNETADS