lucene学习流程

//创建索引步骤

1.创建索引的存放地
IndexWriter indexWriter = new IndexWriter(FSDirectory.open(new File("C:\\suoyin")),

new IndexWriterConfig(Version.LUCENE_36,new IKAnalyzer()).setOpenMode(OpenMode.CREATE));

2.获取本地文件夹中的文件
File[] textFiles = new File("C:\\source").listFiles();

3循环文件判断是不是.txt文件
if (textFiles[i].isFile() && textFiles[i].getName().endsWith(".txt"))

4如果是的话就读取里面的文本,并且new一个document(Document document = new Document();)
String temp = FileReaderAll(textFiles[i].getCanonicalPath(),   "GBK");

5.然后new Field把文本内容存放在索引中
Field FieldBody = new Field("body", temp, Field.Store.YES,   Field.Index.ANALYZED,   Field.TermVector.WITH_POSITIONS_OFFSETS);
document.add(FieldBody);	

6.最后往索引文件夹里面写索引
indexWriter.addDocument(document);


*****注意循环创建完索引要关闭indexWriter******
indexWriter.close();   // 这里不关闭建立索引会失败 

//读取文本内容方法
public static String FileReaderAll(String FileName, String charset)   throws IOException {    
	BufferedReader reader = new BufferedReader(new InputStreamReader(   new FileInputStream(FileName), charset));   
	String line = new String();   
	String temp = new String();    
	while ((line = reader.readLine()) != null) 
	{   
		temp += line;   
	}    
	reader.close();   
	
	return temp; 
  }






//搜索索引步骤

1.读取索引文件
IndexReader indexReader = IndexReader.open(FSDirectory.open(new File("C:\\suoyin")));

2.创建搜索索引
IndexSearcher indexSearcher = new IndexSearcher(indexReader);

3.创建query(这里我们采用的是ik分词器)
QueryParser query = new QueryParser(Version.LUCENE_36, "body", new IKAnalyzer());

4.写入搜索关键字
Query parse = query.parse("秋香");

5.开始进行搜索最多100条   可以自定义
TopDocs search = indexSearcher.search(parse, 100);

6.返回结果集
ScoreDoc[] scoreDocs = search.scoreDocs;


7循环展示
for (int i = 0; i < scoreDocs.length; i++) {
	
	int doc = scoreDocs[i].doc;
	Document doc2 = indexSearcher.doc(doc);
	
	//高亮显示
	//TokenStream tokenStream = analyzer.tokenStream("",new StringReader(doc2.get("body")));  
	//String str = highlighter.getBestFragment(tokenStream, doc2.get("body"));  

	//System.out.println("内容:"+str);
	System.out.println("内容:"+doc2.get("body"));
}



8.关闭索引
indexReader.close(); 

//如何进行高亮显示
//高亮设置  
//设定高亮显示的格式,也就是对高亮显示的词组加上前缀后缀  
SimpleHTMLFormatter simpleHtmlFormatter = new SimpleHTMLFormatter("<font color='red'><strong>", "</strong></font>");
Highlighter highlighter = new Highlighter(simpleHtmlFormatter,new QueryScorer(parse));  
//设置每次返回的字符数.想必大家在使用搜索引擎的时候也没有一并把全部数据展示出来吧,当然这里也是设定只展示部分数据
highlighter.setTextFragmenter(new SimpleFragmenter(150));                                                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值