Posted in Lucene 12 years ago 3 min read
lucene-core-3.4.0.jar lucene-core-3.4.0-javadoc.jar lucene-test-framework-3.4.0.jar lucene-test-framework-3.4.0-javadoc.jarJika anda menggunakan Lucene dengan versi yang berbeda, silakan menyesuaikan, dan kalau bingung, masukkan saja semua JAR nya #eh Setelah itu masukkan file XML ke dalam direktori root LuceneProject anda. Berikut ini adalah cuplikan dari file XML tersebut: DataSiswa.xml
<DATABASE NAME="ABSENSI2010"> <!-- SISWA siswa --> <SISWA> <NIS> 1001 </NIS> <NAMA> ADI DANUDIRJA </NAMA> <KELAS> X - 1 </KELAS> <ALAMAT> Jl. Anggrek 37,Kel. ilir, Gunungsitoli, Nias, Sumatera Utara </ALAMAT> </SISWA>Buatlah Form seperti gambar berikut: LuceneForm.java [caption id="" align="alignnone" width="255"]
Lucene Form[/caption]
Untuk nama variabel dan elemen-elemen GUI dapat dilihat di gambar berikut.
[caption id="" align="alignnone" width="224"]
GUI Component[/caption]
Selanjutnya, isikan code untuk ke-empat button tersebut:
private void btnResetActionPerformed(java.awt.event.ActionEvent evt) {
txtSearch.setText("");
Label.setText("");
}
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
DeleteDir deleteDir = new DeleteDir();
deleteDir.deleteDir();
}
Untuk source code DeleteDir.java dapat dilihat di cara menghapus direktori dengan menggunakan Java
private void btnIndexActionPerformed(java.awt.event.ActionEvent evt) {
Index index=new Index();
index.run();
}
Untuk code di dalam file Index.java silakan menuju ke tutorial berikut: Mengindex file XML dengan menggunakan Lucene
private void btnSearchActionPerformed(java.awt.event.ActionEvent evt) {
DataSearch(txtSearch.getText());
run();
}
Method DataSearch()
public void DataSearch(String keywords) {
this.keywords = keywords;
if(searcher==null){
try{
indexDir = FSDirectory.open(new File("index"));
searcher = new IndexSearcher(indexDir);
}catch (IOException ex) {
Label.setText(ex.getMessage());
}
}
}
Method run() di file LuceneForm.java
public void run() {
TopDocs docs = search();
String result = getResults(docs);
Label.setText(result);
}
Method TopDocs search()
private TopDocs search() {
TopDocs resultDoc = null;
try {
MultiFieldQueryParser parser = new MultiFieldQueryParser(Version.LUCENE_31,
new String[]{"NIS", "NAMA", "KELAS", "ALAMAT"},
new StandardAnalyzer(Version.LUCENE_31));
Query query = parser.parse(keywords);
resultDoc = searcher.search(query, 10);
} catch (Exception ex) {
Label.setText(ex.getMessage());
} return resultDoc;
}
Method getResult (TopDocs docs)
private String getResults(TopDocs docs) {
StringBuilder htmlFormat = new StringBuilder();
htmlFormat.append("<html><body>");
htmlFormat.append("Ditemukan <b>" + docs.totalHits +"</b> dokumen <br>");
for (ScoreDoc sd : docs.scoreDocs) {
int docId = sd.doc;
try {
Document doc = searcher.doc(docId);
htmlFormat.append("<hr>" + "score: " + sd.score
+ "<br><b>Siswa</b>: " + doc.get("NAMA") +
"<br>");
htmlFormat.append("<b>NIS</b>: " +
doc.get("NIS") + "<br>");
htmlFormat.append("<b>Nama</b>: " +
doc.get("NAMA") + "<br>");
htmlFormat.append("<b>Kelas</b>: " +
doc.get("KELAS") + "<br>");
htmlFormat.append("<b>Alamat</b>: " +
doc.get("ALAMAT") + "<br>");
} catch (IOException ex) {
Label.setText(ex.getMessage());
}
}
htmlFormat.append("</body></html>");
return htmlFormat.toString();
}
Selamat mencoba.