java使用lucene_java框架---->lucene的使用(一)

packagecom.linux.huhx.lucene_1;importorg.apache.commons.io.FileUtils;importorg.apache.lucene.analysis.Analyzer;importorg.apache.lucene.analysis.standard.StandardAnalyzer;importorg.apache.lucene.document.Document;importorg.apache.lucene.document.Field;importorg.apache.lucene.document.StringField;importorg.apache.lucene.document.TextField;importorg.apache.lucene.index.DirectoryReader;importorg.apache.lucene.index.IndexReader;importorg.apache.lucene.index.IndexWriter;importorg.apache.lucene.index.IndexWriterConfig;importorg.apache.lucene.queryparser.classic.QueryParser;importorg.apache.lucene.search.IndexSearcher;importorg.apache.lucene.search.Query;importorg.apache.lucene.search.ScoreDoc;importorg.apache.lucene.search.TopDocs;importorg.apache.lucene.store.Directory;importorg.apache.lucene.store.RAMDirectory;importjava.io.File;importjava.io.IOException;public classBaseLucene_1 {public static void main(String[] args) throwsException {//存放在内存中

Directory dir = newRAMDirectory();newBaseLucene_1().createIndex(dir);newBaseLucene_1().search(dir);

}/*** 创建索引*/

public void createIndex(Directory dir) throwsIOException {

IndexWriter indexWriter= null;//1. 创建 Directory (索引存放位置),这里是参数dir//2. 创建IndexWriter 写索引

Analyzer analyzer = newStandardAnalyzer();

IndexWriterConfig iwc= newIndexWriterConfig(analyzer);

indexWriter= newIndexWriter(dir, iwc);//3. 创建Document 对象 field

Document document;

File file= new File("file/example");for(File f : file.listFiles()) {

document= newDocument();//4. 为Documen添加field

document.add(new Field("content", FileUtils.readFileToString(f, "utf-8"), TextField.TYPE_STORED));

document.add(new TextField("fileName", f.getName(), Field.Store.YES));

document.add(new StringField("filePath", f.getAbsolutePath(), Field.Store.YES));//5. 通过IndexWriter 添加文档到索引中

indexWriter.addDocument(document);

}

indexWriter.close();

}/*** 根据内容搜索

*@paramdir

*@throwsException*/

public void search(Directory dir) throwsException {

IndexReader indexReader= null;//1. 创建 Directory,这里通过参数传递过来的dir//Directory dir = FSDirectory.open(new File("file/index").toPath());//本地磁盘//2. 创建 IndexReader

indexReader =DirectoryReader.open(dir);//3. 创建 IndexSearch

IndexSearcher indexSearcher = newIndexSearcher(indexReader);//4. 创建搜索的Query//创建parse确定搜索的内容,第二个参数为搜索的file

QueryParser queryParser = new QueryParser("content", newStandardAnalyzer());//创建Query,表示搜索域中的内容

Query query = queryParser.parse("love");//5. 搜索并返回 TopDocs

TopDocs topDocs = indexSearcher.search(query, 10);//6. 根据topDocs 获得 scoreDocs

ScoreDoc[] socreDocs =topDocs.scoreDocs;for(ScoreDoc doc : socreDocs) {//获取Document对象

Document document =indexSearcher.doc(doc.doc);//根据Document对象获取需要的值

System.out.println(document.get("fileName"));

System.out.println(document.get("content"));

}

indexReader.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值