文档章节

lucene 3.5.0 入门笔记

6pker
 6pker
发布于 2015/02/26 11:43
字数 550
阅读 209
收藏 0

1. lucene-3.5.0.jar

2. 新建目录C:\testsource,新建目录C:\testindex。

3.在C:\testsource下新建test1.txt, test2.txt,内容分别为:“商务休闲品牌男装西裤衬衫”,“潮流休闲品牌女装裙子大衣”。

4.创建索引

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Date;

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.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.index.IndexWriterConfig.OpenMode;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;

/**
 * 给text文件建立索引
 * @author liam.huang@foxmail.com
 */
public class TextFileIndexer {
	
	public static void main(String[] args) throws Exception{
		
		//text文件路径
		File sourceDir = new File("C:\\testsource");
		File[] sourceFiles = sourceDir.listFiles();
		
		//索引文件路径
		File indexDir = new File("C:\\testindex");
		Directory indexFilesDir = FSDirectory.open(indexDir);
		
		//构建analyzer
		Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
		
		//配置IndexWriter
		IndexWriterConfig iwConfig = new IndexWriterConfig(Version.LUCENE_35, analyzer);
		iwConfig.setOpenMode(OpenMode.CREATE);
		
		//构建IndexWriter
		IndexWriter indexWriter = new IndexWriter(indexFilesDir, iwConfig);
		
		long startTime = new Date().getTime();
		for(int i=0; i<sourceFiles.length; i++){
			if(sourceFiles[i].isFile() && sourceFiles[i].getName().endsWith(".txt")){
				System.out.println("\nFile " + sourceFiles[i].getCanonicalPath() + "正在被索引......");
				String temp = fileReaderAll(sourceFiles[i].getCanonicalPath(), "UTF-8");
				System.out.println(temp);
				Field FieldPath = new Field("path", sourceFiles[i].getPath(), Field.Store.YES, Field.Index.NO);
				Field FieldBody = new Field("body", temp, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS);
				Document document = new Document();
				document.add(FieldPath);
				document.add(FieldBody);
				indexWriter.addDocument(document);
			}
		}
		
		//关闭IndexWriter
		indexWriter.close();
		
		long endTime = new Date().getTime();
		System.out.println("\n花费了" + (endTime-startTime) + " 毫秒把文档增加到索引里面去!索引文件地址:" + sourceDir.getPath());
	}

	//读取文件所有内容
	private static String fileReaderAll(String filePath, String charset) throws IOException {
		String line = new String();
		String temp = new String();
		BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), charset));
		while((line=reader.readLine())!=null){
			temp += line;
		}
		reader.close();
		return temp;
	}

}

输出结果:


File C:\testsource\test1.txt正在被索引......
商务休闲品牌男装西裤衬衫

File C:\testsource\test2.txt正在被索引......
潮流休闲品牌女装裙子大衣

花费了569 毫秒把文档增加到索引里面去!索引文件地址:C:\testsource



5.关键字检索


import java.io.File;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexReader;
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.FSDirectory;
import org.apache.lucene.util.Version;

/**
 * 关键字检索
 * @author liam.huang@foxmail.com
 */
public class TextQuery {
	
	public static void main(String[] args) throws Exception{
		
		String queryString = "休闲 装";

		//索引文件路径
		String indexDir = "C:\\testindex";
		IndexReader indexReader = IndexReader.open(FSDirectory.open(new File(indexDir)));
		IndexSearcher indexSearcher = new IndexSearcher(indexReader);
		
		Query query = null;
		Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_35);
		QueryParser queryParser = new QueryParser(Version.LUCENE_35, "body", analyzer);
		queryParser.setDefaultOperator(QueryParser.AND_OPERATOR);
		query = queryParser.parse(queryString);
		
		ScoreDoc[] hits = null;
		if(indexSearcher!=null){
			//返回最多为10条记录 
			TopDocs results = indexSearcher.search(query, 10);
			hits = results.scoreDocs;
			if(hits.length>0){
				System.out.println("找到:" + hits.length + " 个结果!");
			}else{
				System.out.println("没有找到");
			}
			indexSearcher.close();
		}
		
	}

}

输出结果:


找到:2 个结果!






© 著作权归作者所有

共有 人打赏支持
6pker
粉丝 51
博文 98
码字总数 59361
作品 0
浦东
程序员
Lucene 3.5和Solr 3.5:大幅降低内存用量、SearcherManager和深度分页支持

Lucene项目管理委员会宣布Apache Lucene 3.5.0和Apache Solr 3.5.0已经可以使用。Lucene是一个高性能、支持全文搜索的文本搜索开发库。Solr是一个独立的搜索服务器,其核心使用了Lucene来做索...

墙头草
2012/02/03
3.4K
7
Apache Solr 3.5 发布,全文搜索服务器

Apache Solr 3.5 发布了,该版本主要是配合 Lucene 3.5 版本而发布。 下载地址:http://www.apache.org/dyn/closer.cgi/lucene/solr 值得关注的改进内容有: Bug fixes and improvements fro...

红薯
2011/11/27
1K
0
Apache Lucene 3.5 发布,Java 搜索引擎

Apache Lucene 3.5 发布了,该版本包含大量的bug修复、优化以及改进,下载地址: http://www.apache.org/dyn/closer.cgi/lucene/java 完整改进内容请看下载后的 CHANGES.txt 文件。 Lucene 3...

红薯
2011/11/27
3.9K
5
Infinispan 7.0.0.Alpha4 发布

Infinispan 7.0.0 Alpha 4 发布了,值得关注的改进有: * HotRod 协议支持认证和 SKIP_CACHE_LOAD 参数; * Distributed entry iterator 可以迭代集群中所有条目; * 可使用查询 DSL 来进行对象...

红薯
2014/05/21
1K
2
Lucene In Action 读书笔记(一)

简介 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和...

林俊龙
2013/09/04
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

day58-20180816-流利阅读笔记-待学习

苹果市值破万亿,iPhone 会涨价吗? Lala 2018-08-16 1.今日导读 苹果教父乔布斯曾经说过:“活着就是为了改变世界。”虽然他在 56 岁时就遗憾离世,但他极具创新和变革的精神早已深埋进苹果...

aibinxiao
31分钟前
4
0
[雪峰磁针石博客]python3快速入门教程1 turtle绘图-2函数

菲波那契序列: >>> # Fibonacci series:... # the sum of two elements defines the next... a, b = 0, 1>>> while b < 10:... print(b)... a, b = b, a+b...112......

python测试开发人工智能安全
今天
0
0
java环境变量配置最正确的方式

原贴:https://blog.csdn.net/qq_40007997/article/details/79784711,十分详细,亲测有效

kitty1116
今天
0
0
49.Nginx防盗链 访问控制 解析php相关 代理服务器

12.13 Nginx防盗链 12.14 Nginx访问控制 12.15 Nginx解析php相关配置(502的问题) 12.16 Nginx代理 扩展 502问题汇总 http://ask.apelearn.com/question/9109 location优先级 http://blog....

王鑫linux
今天
2
0
Nginx防盗链、访问控制、解析php相关配置、Nginx代理

一、Nginx防盗链 1. 编辑虚拟主机配置文件 vim /usr/local/nginx/conf/vhost/test.com.conf 2. 在配置文件中添加如下的内容 { expires 7d; valid_referers none blocked server_names *.tes......

芬野de博客
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部