讓我們使用Lucene框架做實(shí)際編程。在開始使用Lucene框架編寫第一個(gè)例子之前,必須確保已經(jīng)安裝Lucene的環(huán)境正常。也假設(shè)有一點(diǎn)點(diǎn)的工作和Eclipse IDE的知識。
因此,開始寫一個(gè)簡單的搜索應(yīng)用程序?qū)⒋蛴≌业剿阉鹘Y(jié)果數(shù)量。我們也看到在這個(gè)過程中創(chuàng)建的索引列表。
第一步是使用Eclipse IDE創(chuàng)建一個(gè)簡單的Java項(xiàng)目。按照選項(xiàng) File -> New -> Project 最后選擇 Java Project 從向?qū)Я斜硐驅(qū)А,F(xiàn)在,項(xiàng)目命名為 LuceneFirstApplication 使用向?qū)Т翱?,如下所示?/p>
一旦項(xiàng)目成功創(chuàng)建,將有以下內(nèi)容在 Project Explorer:
作為第二步,我們添加Lucene核心框架庫在項(xiàng)目中。要做到這一點(diǎn),右鍵單擊項(xiàng)目名稱LuceneFirstApplication然后按照上下文菜單中提供以下選項(xiàng):Build Path -> Configure Build Path,顯示了Java構(gòu)建路徑如下窗口:
現(xiàn)在,使用添加在庫選項(xiàng)卡中提供外部JAR按鈕,添加Lucene安裝目錄下的核心JAR:
lucene-core-3.6.2
現(xiàn)在,讓我們 LuceneFirstApplication 項(xiàng)目下創(chuàng)建實(shí)際的源文件。首先,我們需要創(chuàng)建一個(gè)名為 com.yiibai.lucene 包。要做到這一點(diǎn),右鍵單擊 src 在包資源管理部分,并按照選項(xiàng):New -> Package.
下一步,我們將創(chuàng)建 LuceneTester.java 和 其他Java類在 com.yiibai.lucene 包下。
LuceneConstants.java
這個(gè)類是用來提供跨示例應(yīng)用程序中使用的各種常量。
package com.yiibai.lucene; public class LuceneConstants { public static final String CONTENTS="contents"; public static final String FILE_NAME="filename"; public static final String FILE_PATH="filepath"; public static final int MAX_SEARCH = 10; }
TextFileFilter.java
此類用于為 .txt 文件過濾器
package com.yiibai.lucene; import java.io.File; import java.io.FileFilter; public class TextFileFilter implements FileFilter { @Override public boolean accept(File pathname) { return pathname.getName().toLowerCase().endsWith(".txt"); } }
Indexer.java
這個(gè)類是用于索引的原始數(shù)據(jù),這樣我們就可以使用Lucene庫,使其可搜索。
package com.yiibai.lucene; import java.io.File; import java.io.FileFilter; import java.io.FileReader; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.store.Directory; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.util.Version; public class Indexer { private IndexWriter writer; public Indexer(String indexDirectoryPath) throws IOException{ //this directory will contain the indexes Directory indexDirectory = FSDirectory.open(new File(indexDirectoryPath)); //create the indexer writer = new IndexWriter(indexDirectory, new StandardAnalyzer(Version.LUCENE_36),true, IndexWriter.MaxFieldLength.UNLIMITED); } public void close() throws CorruptIndexException, IOException{ writer.close(); } private Document getDocument(File file) throws IOException{ Document document 上一篇:Lucene WildcardQuery類下一篇:Lucene PrefixQuery類