第一步:创建一个动态网站项目Lucene_Test
第二步:准备好需要做索引的数据 并放到合适的目录中(F:\Files\data) 以及存放索引的目录(F:\Files\index)(不要使用中文目录)
第三步:导入Lucene-4.9.1的jar包
导入hadoop的常用包 便于进行文件处理
第三步:创建CreateIndex类 代码如下
package com.lucene;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
public class CreateIndex {
public static final String indexDir="F:/Files/index";}
运行成功后 可以看到index文件夹下生成了索引文件
第四步:创建SearchIndex类 代码如下
package com.lucene;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
public class SearchIndex {
@Test
public void search(){
try {
Directory dir = FSDirectory.open(new File(CreateIndex.indexDir));
IndexReader reader = DirectoryReader.open(dir);
IndexSearcher searcher = new IndexSearcher(reader);
StandardAnalyzer standardAnalyzer = new StandardAnalyzer(Version.LUCENE_4_9);
QueryParser qp = new QueryParser(Version.LUCENE_4_9,"content",standardAnalyzer);
Query query = qp.parse("java");
TopDocs search = searcher.search(query, 10);
ScoreDoc[] scoreDocs = search.scoreDocs;
for(ScoreDoc sc:scoreDocs){
int docId = sc.doc;
Document document = reader.document(docId);
System.out.println(document.get("filename"));;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行即可看到“java”这个关键字出现在哪几个文件里