承接上次的txt文本索引,Lucene操作很固定化,看看源码其实就是很好的学习过程,在这跟大家分享基本的搜索方法实现,之后对索引和搜索方法会写些复杂点的操作给大家,这个可以作为一个入门和兴趣培养啊,哪里不懂google搜索一下几分钟就能看懂:
package testLucene;
import java.util.Date;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
public class Search {
private IndexSearcher search=null;
private Query query=null;
//搜索关键字方法 返回Hits
public final Hits SearchKeyword(String keyword){
System.out.println("正在搜索关键字:"+keyword);
try{
query=QueryParser.parse(keyword, "contents", new StandardAnalyzer());
Date start=new Date();
Hits hits=search.search(query);
Date end=new Date();
System.out.println("检索用时:"+(end.getTime()-start.getTime())+"毫秒");
return hits;
}catch(Exception e){
e.printStackTrace();
return null;
}
}
//构造函数 初始化search
public Search(){
try{
search=new IndexSearcher(IndexReader.open(Constants.Index_Store_Path));
}catch(Exception e){
e.printStackTrace();
}
}
//输出Hits的结果
public void printResult(Hits h){
if(h.length()==0){
System.out.println("对不起,没有找到搜索结果");
}else{
for(int i=0;i<h.length();i++){
try{
Document doc=h.doc(i);
System.out.print("这是第"+i+"个搜索到的结果,文件名为:");
System.out.println(doc.get("path"));
}catch(Exception e){
e.printStackTrace();
}
}
}
System.out.println();
}
//main方法 使用上述方法,实现此次搜索
public static void main(String[] args){
Search sea=new Search();
Hits h=null;
//检索“叫做”
h=sea.SearchKeyword("叫做");
sea.printResult(h);
//检索“文件”
h=sea.SearchKeyword("文件");
sea.printResult(h);
//检索“新建”
h=sea.SearchKeyword("新建");
sea.printResult(h);
//检索“我”
h=sea.SearchKeyword("我");
sea.printResult(h);
}
}
其中上次四次文件的内容分别是:
a.txt:我新建的文件叫做a
b.txt:新建的文件叫做b
c.txt:文件叫做c
d.txt:叫做d
运行结果:
正在搜索关键字:叫做
检索用时:110毫秒
这是第0个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\d.txt
这是第1个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\c.txt
这是第2个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\a.txt
这是第3个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\b.txt
正在搜索关键字:文件
检索用时:15毫秒
这是第0个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\c.txt
这是第1个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\a.txt
这是第2个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\b.txt
正在搜索关键字:新建
检索用时:0毫秒
这是第0个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\a.txt
这是第1个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\b.txt
正在搜索关键字:我
检索用时:16毫秒
这是第0个搜索到的结果,文件名为:E:\E\Java\Lucene\testUse\test1\a.txt
分享到:
相关推荐
Lucene作为一种开源的全文检索解决方案,提供了强大的功能和支持,可以帮助开发者轻松实现高效的搜索服务。无论是站内搜索还是垂直搜索,Lucene都能提供出色的表现。通过本文档的学习,你可以深入了解全文检索的基本...
用法索引和搜索 CSV 文件的内容。 输入文件中的第一列是每个索引文档的 ID 字段。 索引器从 [ input.csv ] 创建 [ index/dir ] 索引器从 [ input.csv ] 追加 [ index/dir ] 索引器从 [ input.csv ] 更新 [ index/dir...
接下来,通过`FSDirectory.getDirectory(from, false)`获取源索引文件的目录,并将其作为参数传递给`indexWriter.addIndexes`方法,将源索引添加到合并列表中。调用`indexWriter.optimize()`执行实际的合并操作,...
它实现了倒排索引、分词、TF-IDF算法等核心搜索引擎技术,使得开发者能够轻松地在应用程序中实现全文搜索。 2. **核心组件**:Lucene.NET主要由以下组件构成:Analyzer(分析器)负责文本的分词;Document(文档)...
开发者可以通过编写Java代码,调用Lucene API创建、更新、读取和删除索引,实现自己的全文检索应用。 总结,Lucene 是一个强大的全文检索工具,能够有效地处理大规模文本数据的搜索需求,与传统的数据库搜索相比,...
Lucene是一个高性能、全文本搜索库,其核心功能包括文档索引、搜索、排序和高亮显示。它支持多种文本分析器,能够处理多种语言的文本数据。在2.9.4.2这个版本中,开发者对代码进行了优化,修复了已知的bug,以提供更...
**hibernateSearch 搜索 索引列子源代码** Hibernate Search 是 Hibernate 的一个扩展模块,它将全文搜索引擎的功能集成到了 Java 应用中,允许开发者在数据库中进行复杂的文本搜索。本教程将深入探讨 Hibernate ...
压缩包中的"luceneDemo00"文件可能包含了一个使用Lucene实现的查询示例。这个示例可能包括如何创建索引,如何构建查询解析器,以及如何执行搜索等步骤。以下是一个基本的Lucene使用流程: 1. **初始化**: 创建一个`...
可能使用全文搜索引擎如Lucene.NET,或者利用SQL查询实现简单的关键字匹配。 6. **界面设计**:使用ASP.NET的MVC(Model-View-Controller)模式,分离业务逻辑、数据展示和用户交互。HTML、CSS和JavaScript用于构建...
盘古分词的DLL文件,就是将分词算法封装成的动态链接库,可供开发者在自己的应用程序中调用,以实现中文分词功能。 盘古分词,作为国内知名的中文分词工具,以其高精度和较快的分词速度而受到广泛应用。PanGu.dll是...
- **6.1.2 stored fields**:只存储真正需要的字段,减少索引文件的大小。 **6.2 Configuration Considerations** - **6.2.1 mergeFactor**:合并索引段的参数,合理的设置可以平衡索引的写入速度和查询性能。 - *...
Elasticsearch是一个分布式、RESTful风格的搜索和分析引擎,基于Lucene构建。它的设计目标是使大规模数据搜索变得简单、快速。SQL(Structured Query Language)则是关系型数据库的查询语言,用于操作和检索数据。 ...
Solr基于Apache Lucene,它提供了更高级的功能,如集群、分布式搜索、复制和负载均衡,使得Solr更适合大规模、高并发的搜索应用。 1.2.2 Schema(模式) Schema是Solr的核心配置之一,用于定义索引字段、数据类型...
在实际开发中,.NET开发者可能会使用如Lucene.NET这样的开源搜索引擎库来加速开发进程,它提供了一些核心的搜索引擎功能,如索引和查询。同时,对于大规模的搜索引擎,还需要考虑分布式系统的设计,如分布式爬虫、...
- 在大数据量的表上,对性别字段这样的分类字段建立索引可能不会显著提升`select * from user where sex=1`这样的查询速度。 - `like "abc%"`类型的查询通常无法利用索引,因为它是从字符串中间开始匹配的。 - ...
- 搜索索引:建立全文索引以提高查询速度,例如使用Lucene.NET这样的开源库。 - 异步处理:对于复杂查询,可以采用异步处理,避免阻塞用户界面。 7. 安全性 搜索功能需要注意SQL注入攻击,确保用户输入的数据经过...