<span style="font-size:14px;">import java.io.File;
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.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryParser.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;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Test test = new Test();
test.searchIndex();
}
public void createIndex(){
IndexWriter writer = null;
try {
//1.创建一个索引目录
Directory dir = FSDirectory.open(new File("F:\\tt\\index"));
//2.创建一个indexWriter
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.LUCENE_35));
writer = new IndexWriter(dir, iwc);
//3.创建一个document
Document document = null;
for(File f:new File("F:\\tt\\file").listFiles()){
document = new Document();
document.add(new Field("content",new FileReader(f)));
document.add(new Field("path",f.getAbsolutePath(),Field.Store.YES,Field.Index.NOT_ANALYZED));
document.add(new Field("name",f.getName(),Field.Store.YES,Field.Index.NOT_ANALYZED));
}
//4.利用indexWriter将索引写入到目录中
writer.addDocument(document);
} catch (IOException e) {
e.printStackTrace();
}finally{
if(writer!=null){
try {
writer.close();
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void searchIndex(){
Directory dir;
try {
//1.创建一个目录
dir = FSDirectory.open(new File("F:\\tt\\index"));//建立在硬盘上
//2.创建一个indexReader
IndexReader reader = IndexReader.open(dir);
//3.创建一个indexSearcher
IndexSearcher searcher = new IndexSearcher(reader);
//4.创建一个queryParser(第二个参数为要搜索的域,即条件)
QueryParser parser = new QueryParser(Version.LUCENE_35, "content", new StandardAnalyzer(Version.LUCENE_35));
//5.创建一个query(参数为要搜索的指,即content=“中华”)
Query query = parser.parse("可以实现该功能。");
//6.根据searcher搜索并返回一个TopDocs
TopDocs docs = searcher.search(query, 10); //搜索前10条记录
//7.根据TopDocs获取一个ScoreDoc数组对象
ScoreDoc[] sds = docs.scoreDocs;
Document document ;
for(ScoreDoc sd : sds){
//8.创建一个document
document = searcher.doc(sd.doc); //根据编号为sd.doc查找
System.out.println("path:"+document.get("path")+"-------- name:"+document.get("name"));
}
//9.关闭流
searcher.close();
reader.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
</span>
lucene3.5建立索引和查询
最新推荐文章于 2017-11-13 12:35:32 发布