Lucene mendukung berbagai macam query, seperti Term Query, Boolean Query, Fuzzy Query, Span Query, dan masih banyak lagi.
Post kali ini membahas mengenai perbedaan dari Term Query, Boolean Query, dan Fuzzy Query.
Term Query
Dari berbagai macam implementasi dari query, term query adalah yang paing mudah dipahami dan paling banyak digunakan di dalam aplikasi. Term query akan mencocokan dengan semua dokumen yang berisi term yang telah dispesifikasikan.
Term query akan mengidentifikasi dan melakukan skoring ke semua dokumen yang memiliki field dengan string tertentu.
contoh:
TermQuery tq = new TermQuery(new Term("fieldName", "term"));
Dari contoh di atas, Query akan mengidentifikasi semua dokumen yang memiliki Field bernama "fieldName" dan berisi kata "term"
[caption id="attachment_1599" align="aligncenter" width="300"]
Logo Lucene[/caption]
Boolean Query
Term Query akan menjadi lebih baik jika digabungkan dengan Boolean Query. Dengan Boolean Query kita dapat menggunakan operator seperti SHOULD, MUST, dan MUST NOT.
Dalam sumber lain (di luar Lucene), Boolean Query menggunakan operator seperti OR dan AND. Sedangkan di dalam dokumentasi Lucene sendiri terdapat tiga operator di atas. ~Belum diklarifikasi.
Fuzzy Query
Fuzzy Query akan mencocokan dokumen yang berisi term mirip dengan yang term diberikan. Similarity ditentukan dengan menggunakan
Levenshtein distance.
Fuzzy Query sangat bermanfaat untuk menghitung variasi ejaan (spelling) di dalam suatu collection.
sumber:
http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/search/package-summary.html#package_description
Semoga bermanfaat.