private void getLucene()
{
File filePath = new File("E:\\xbliucss");
File indexPath = new File("E:\\xbliucss");
//创建一个标准解析器
StandardAnalyzer sAnalyzer = new StandardAnalyzer();
//给文档加索引
IndexWriter indexWriter = new IndexWriter(filePath, sAnalyzer, true);
File[] fileList = filePath.listFiles();
Long startTime = new Date().getTime();
//增加Document到索引中
for (int i = 0; i < fileList.length; i++)
{
if (fileList[i].isFile() && fileList[i].getName().endsWith(".txt"))
{
System.out.println("File: " + fileList[i].getCanonicalPath()
+ "正在被索引");
String temp = fileReaderAll(fileList[i].getCanonicalPath(),
"GBK");
System.out.println(temp);
Document document = new Document();
//保存文件路径
Field filedPath = new Field("path", fileList[i].getPath(),
Field.Store.YES, Field.Index.NO);
//保存文件内容
Field filedBody = new Field("body", temp, Field.Store.YES,
Field.Index.TOKENIZED,
Field.TermVector.WITH_POSITIONS_OFFSETS);
document.add(filedPath);
document.add(filedBody);
indexWriter.addDocument(document);
}
}
indexWriter.optimize();//对索引进行优化
indexWriter.close();
long endTime = new Date().getTime();
System.out.println("这花费了:" + (endTime - startTime) + "毫秒把文档增加到索引里面去"
+ indexPath.getPath());
}
private String fileReaderAll(String fileName, String charset)
{
FileInputStream fis = new FileInputStream(fileName);
InputStreamReader is = new InputStreamReader(fis, charset);
BufferedReader reader = new BufferedReader(is);
String line = "";
String temp = "";
while ((line = reader.readLine()) != null)
{
temp += line;
}
reader.close();
return temp;
}
public void queryFile()
{
Hits hits = null;
String queryStr = "中华";
Query query = null;
IndexSearcher iSearcher = new IndexSearcher("E:\\xbliucss"); //检索工具,索引存放的目录
Analyzer analyzer = new StandardAnalyzer();//标准解析器
QueryParser qParse = new QueryParser("body", analyzer); //查询器,返回一个Query对象
query = qParse.parse(queryStr);
if (iSearcher != null)
{
hits = iSearcher.search(query);
}
Iterator<?> iterator = hits.iterator();
while (iterator.hasNext())
{
//一条记录对应一个Hit对象
Object next = iterator.next();
if (next instanceof Hit)
{
Hit hit = (Hit)next;
Document document = hit.getDocument();
Field field = document.getField("path");//path:对应索引时的标识
String filePath = field.stringValue();//获取文件路径
System.out.println("文件路径:" + filePath);
Field field2 = document.getField("body");//body:对应索引时的标识
String fileBody = field2.stringValue();//获取文件内容
System.out.println("文件内容:" + fileBody);
}
}
System.out.println("共找到" + hits.length() + "个结果。");
}
分享到:
相关推荐
《Lucene2实战源码解析》 Lucene2是一款由Apache软件基金会开发的全文搜索引擎库,它是Java语言实现的开源项目,广泛应用于信息检索、数据分析等领域。本篇将基于提供的"Lucene2实战源码"进行深入探讨,帮助读者...
WebLucene2.zip 文件可能是一个包含Lucene库的压缩包,用于在Web环境中实现全文搜索引擎。Lucene是Apache软件基金会的一个开源项目,它提供了一个高性能、可伸缩的信息检索库。这个库允许开发者轻松地在应用程序中...
《Ajax+Lucene构建搜索引擎》源代码是针对Lucene 2.x版本的一个示例项目,旨在教用户如何结合Ajax技术和Lucene搜索引擎库来创建高效的、交互式的搜索功能。Lucene是一个开源全文检索库,由Apache软件基金会开发,它...
基于LUCENE2_0的源代码搜索引擎架构的实现(论文)
【Lucene 2 教程】Lucene 是 Apache 软件基金会开发的开源全文搜索引擎库,用 Java 编写,适用于多种操作系统。它提供了一种高效、灵活的方式来创建和管理索引,使得数据能够被快速检索。在 Lucene 中,`Document` ...
LuceneInAction 2nd edition.pdf ) Lucene2实战(中文版)
2. **Lucene API**:详细讲解了Lucene的各个核心组件,如Analyzer(分析器)用于处理文本,Document(文档)用于存储数据,IndexWriter(索引写入器)用于创建和更新索引,以及Searcher(搜索器)用于执行查询。...
Lucene_in_Action(中文版).pdf ...2. 索引 3. 为程序添加搜索 4. 分析 5. 高极搜索技术 6. 扩展搜索 第二部分 Lucene 应用 7. 分析常用文档格式 8. 工具和扩充 9. Lucene 其它版本 10. 案例学习
《深入剖析Lucene 2.3.0源码与API》 Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护。它为开发者提供了在Java应用中实现全文搜索功能的基本工具。Lucene 2.3.0是该库的一个重要版本,包含了丰富的...
2. **文档分析**:Lucene包含了强大的文档分析器,可以将输入的文本分解成有意义的词语,进行分词、去除停用词、词形还原等预处理操作,以提高搜索质量。 3. **索引过程**:索引是Lucene的核心部分,包括文档的读取...
2.MUST和MUST_NOT:表示查询结果中不能包含MUST_NOT所对应得查询子句的检索结果。 3.MUST_NOT和MUST_NOT:无意义,检索无结果。 4.SHOULD与MUST、SHOULD与MUST_NOT: SHOULD与MUST连用时,无意义,结果为MUST子句...
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
是一本译本,有Lucene搜索引擎框架的部分作者编写,值得学习!
"lucene学习pdf2" 提供的文档,无疑是对Lucene深入理解的一把钥匙,它涵盖了Lucene的核心概念、操作流程以及高级特性。 首先,Lucene的基础知识是必不可少的。Lucene的核心在于索引和搜索,它将非结构化的文本数据...
2. **安装与配置**:详细讲解如何在Java环境中集成Lucene,包括依赖管理和配置设置,以及如何创建一个基本的搜索应用。 3. **文本处理**:探讨如何对输入文本进行预处理,如分词、去除停用词、词干提取等,以提高...
不知道Lucene.net的搜一下了解后再来下! Lucene 是 Java 世界中常用的索引 API,使用它提供的方法可以为文本资料创建索引,并提供检索。Lucene .NET 是第一个的 .net 移植,也是一个有 .net 风格的版本,使用 .net ...
Lucene是一款强大的全文搜索引擎库,广泛应用于各种数据检索场景。在C#环境下,利用Lucene进行时间区间搜索是提高数据检索效率和精确度的重要手段。本篇将深入探讨如何在C#中实现Lucene的时间区间查询匹配,以及涉及...
2. **分词器(Tokenizer)与过滤器(Filter)**:Lucene支持自定义的分词规则,如`StandardTokenizer`和`LowerCaseFilter`。这些在`analysis`包下的源码中可以找到,它们负责将原始文本转换为可搜索的术语。 3. **...
《Lucene in Action 2nd Edition》是一本深入探讨Apache Lucene搜索引擎库的权威书籍,由Manning出版社在2010年发行。这本书详细介绍了如何利用Java编程语言来构建高性能、可扩展的全文检索应用。Lucene是Apache软件...
2. **搜索算法**:Lucene实现了布尔、短语、模糊、评分等高级搜索算法,使得用户可以灵活地构造复杂的查询条件。 3. **高性能**:Lucene通过内存缓存、位向量和优化的数据结构来提高搜索速度。同时,它支持多线程...