I was fortunate enough to attend Erik Hatcher’s Lucene presentation at the Northern Virginia Software Symposium. The symposium was organized by . I’ll talk more about Lucene as I explore its abilties.

For now, I’m just documenting the self-contained example program that Erik used as his first example:

/*
 * Created on Apr 21, 2003
 *
 */
package com.affy.lucene.tutorial;

import java.io.IOException;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;

/**
 * This program indexes three strings using Lucene
 * and then searches for the string that contains
 * the "doc1" string.
 */
public class ErikHatcherSelfContainedExample {

	public static void main(String[] args) throws IOException {

		String docs[] = {
			"doc1 - present!",
			"doc2 is right here",
			"and do not forget lil ol doc3"
		};

		Directory directory = new RAMDirectory();

		Analyzer analyzer = new StandardAnalyzer();
		IndexWriter writer = new IndexWriter(directory, analyzer, true);
		for (int j = 0; j < docs.length; j++) {
			Document d = new Document();
			d.add(Field.Text("contents", docs[j]));
			writer.addDocument(d);
		}
		writer.close();

		Searcher searcher = new IndexSearcher(directory);
		Query query = new TermQuery(new Term("contents", "doc1"));
		Hits hits = searcher.search(query);
		System.out.println("doc1 hits: " + hits.length());
		searcher.close();

		System.out.println("Done.");
	}
}