Lucene的使用代码

package org.lcc.lucene;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
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.document.Field.Store;
import org.apache.lucene.document.LongField;
import org.apache.lucene.document.StoredField;
import org.apache.lucene.document.StringField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
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;

public class MyLucene {
	@Test
	public void createDirectory() throws IOException{
		
		//为索引库指定一个地址 
		//内存地址
		//Directory dir = new RAMDirectory();
		//本地地址
		Directory dir = FSDirectory.open(new File("D:\\DirectoryLucene"));
		
		//创建一个IndexWriter对象
		Analyzer analyzer = new StandardAnalyzer();
		IndexWriterConfig indexConfig = new IndexWriterConfig(Version.LATEST, analyzer );
		IndexWriter indexW = new IndexWriter(dir, indexConfig);
		
		
		//读取文件
		File fileDir = new File("D:\\SourceLucene");
		
		for(File file:fileDir.listFiles()){
			// 文件名称
			String name = file.getName();
			//文件的内容
			String content = FileUtils.readFileToString(file);
			//文件的大小
			Long size = FileUtils.sizeOf(file);
			//文件的路径
			String path = file.getPath();
			//为每一个File创建一个文档对象
			Document doc = new Document();
			//创建域
			
			Field nameF = new StringField("name", name, Store.YES);
			//Field textF = new StringField("content", content, Store.YES);
			Field longF = new LongField("size", size, Store.YES);
			Field pathF = new StoredField("path", path);
			
			doc.add(nameF);
			doc.add(longF);
			//doc.add(textF);
			doc.add(pathF);
			
			indexW.addDocument(doc);
			
			
		}
		
		//关闭Indexwriter
		indexW.close();
	}
	@Test
	public void serachIndex() throws IOException{
		
		//指定索引库的地址
		Directory directory = FSDirectory.open(new File("D:\\DirectoryLucene"));
		
		//创建一个IndexReader对象
		IndexReader ir = DirectoryReader.open(directory);
		//创建一个IndexSearch对象
		IndexSearcher is = new IndexSearcher(ir);
		Query query = new TermQuery(new Term("name","spring.txt"));
		TopDocs topDocs = is.search(query, 10);
		
		System.out.println("查询结果条数:"+topDocs.totalHits);
		
		for(ScoreDoc sd:topDocs.scoreDocs){
//			sd.doc即是文档的ID
			Document doc = is.doc(sd.doc);
			System.out.println("文件名称:"+doc.get("name"));
			System.out.println("文件路径:"+doc.get("path"));
			System.out.println("文件大小:"+doc.get("size"));
		}
		ir.close();
	}
	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值