、lucene是apache下的一个开源框架,主要使用于处理大量资源全文搜索的时间使用的工具。从其官方网站定义为:Apache的Lucene的是一种基于java语言开发的、高性能、跨平台、几乎适用于任何程序的全文搜索引擎。并且apache的Lucenea是完全开源的。当前最新版本是2.4.1。
下边我们首先看一个简单的Lucene的例子。
package com.ikdy.yeming;
import net.paoding.analysis.analyzer.PaodingAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
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.TopDocCollector;
public class IndexFileTest {
public static final String INDEX_FILE_PATH = "D:/web/indexFile";
public static void main(String[] args) throws Exception{
IndexWriter write = new IndexWriter(INDEX_FILE_PATH,new PaodingAnalyzer(),true,IndexWriter.MaxFieldLength.LIMITED);
write.setUseCompoundFile(false);
Document doc = new Document();
Document doc1 = new Document();
Document doc2 = new Document();
Document doc3 = new Document();
Document doc4 = new Document();
Document doc5 = new Document();
Document doc6 = new Document();
Document doc7 = new Document();
Document doc8 = new Document();
Field file = new Field("bookname"," 本报感城3月25日电 (记者梁振君 特约记者卞王玉珏)东方市感城镇“3·23”事件今天出现反弹。中午11时半,该镇感城村和宝上村村民各500人左右分别聚集在感恩桥附近,约1小时后双方发生小规模冲突,当场造成3名村民不同程度受伤,其中1名伤者送往医院抢救无效死亡,死者为宝上村村民。当地许多村民痛心地表示,大家同居一地同饮一江水,应该和睦相处。希望双方立即停止对彼此的伤害,不再让悲剧继续发生。",Field.Store.YES,Field.Index.ANALYZED);
Field file1 = new Field("bookname","从昨天凌晨1时许直至今天中午11时许,经过东方市委、市政府及省公安厅、边防总队等各方努力,感城镇的秩序已趋稳定,事态基本平息。今天上午10时许,海南日报记者驱车来到感城镇政府所在地和感城村,一路上看到载客中巴车、三轮摩托车畅行无阻,镇上的店铺照常开门营业,当地群众坐在道路两侧喝茶闲聊。",Field.Store.YES,Field.Index.ANALYZED);
Field file2= new Field("bookname","中午11时半左右,一辆感城村的私人小货车在宝上村出口处被该村部分村民拦截并烧毁,由此引发宝上村和感城村重新发生对峙,并造成冲突。幸亏警方及时处置,使得冲突没有扩大化。截至今晚10时许,局面初步得到控制,聚集村民均已散去,警方仍在两村之间巡防",Field.Store.YES,Field.Index.ANALYZED);
Field file3 = new Field("bookname","“3·23”事件发生后,省委、省政府高度重视,省委书记卫留成、省长罗保铭分别作出重要批示。省委常委、政法委书记肖若海今天下午赶到感城镇现场指挥。事件发生以来,东方市委书记王河山、市长谭灯耀一直坚持在一线指挥,积极会同有关各方想方设法开展稳控工作平息事态。",Field.Store.YES,Field.Index.ANALYZED);
Field file4 = new Field("bookname","针对事件发展态势,省委政法委、省公安厅、东方市等有关各方在继续组织大批干部进村入户做好涉事村庄村民的思想教育工作,同时采取多种手段对村民开展法制宣传;积极做好死者家属善后工作,并要求医院全力抢救伤者;加大案件侦破力度,同时组织警力做好必要的防控工作。",Field.Store.YES,Field.Index.ANALYZED);
Field file5 = new Field("bookname","事件发生后,焦作市委专门召开会议,成立调查组对媒体反映的情况进行了全面调查。根据调查结果,焦作市委、市政府严肃处理了相关责任人,并要求畅通渠道,广开言路,接受群众监督,坚持为民创建,科学创建,继续深入开展创建国家卫生城市活动。鉴于此事件已对全国创建卫生城市工作造成不良影响,为保证创建国家卫生城市工作的公正性和严肃性,全国爱卫办决定",Field.Store.YES,Field.Index.ANALYZED);
Field file6 = new Field("bookname","来到柜台后,“白夹克”声称准备结婚,提出要买一枚1克拉的钻戒。眼看来了大顾客,营业员耐心地为两人挑选钻石。两人先是选中一款11万元的钻戒,随后“白夹克”又看中旁边一颗标价为33万元的裸钻。",Field.Store.YES,Field.Index.ANALYZED);
Field file7 = new Field("bookname","“黑西装”直奔克拉厅的柜台前,称要买之前看中的33万元的裸钻。得知是前一天预约的顾客后,营业员顿时兴高采烈地拿出了裸钻。“黑西装”取出了自带的放大镜,还拿出了一个镊子,仔细观察钻石的成色。大约10分钟后,“黑西装”查看结束,将裸钻还给营业员,表示十分满意,提出1小时后来取货。在“黑西装”查看裸钻的时候,“白夹克”并未凑过来,而是在旁边挑选其他饰品。",Field.Store.YES,Field.Index.ANALYZED);
Field file8 = new Field("bookname","24日早晨,民警追查到,这3人目前正住在闵行区金汇路颐美庭园酒店内。当天下午3点半左右,民警在306房间内将“黑西装”李银林和“白夹克”万尧荣等3人抓获。此时距离钻石被盗仅24个小时。经审问,李银林在拿镊子查看裸钻时,曾利用营业员低头的一刹那,伸手摸了摸自己的裤子口袋———短短几秒钟的时间,他便完成了调包。",Field.Store.YES,Field.Index.ANALYZED);
doc.add(file);
doc1.add(file1);
doc2.add(file2);
doc3.add(file3);
doc4.add(file4);
doc5.add(file5);
doc6.add(file6);
doc7.add(file7);
doc8.add(file8);
write.addDocument(doc);
write.addDocument(doc1);
write.addDocument(doc2);
write.addDocument(doc3);
write.addDocument(doc4);
write.addDocument(doc5);
write.addDocument(doc6);
write.addDocument(doc7);
write.addDocument(doc8);
write.close();
try {
IndexReader reader = IndexReader.open(INDEX_FILE_PATH);
IndexSearcher search = new IndexSearcher(reader);
QueryParser parser = new QueryParser("bookname", new PaodingAnalyzer());
Query query =parser.parse("“黑西装”");
TopDocCollector collector = new TopDocCollector(10);
search.search(query,collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
int numTotalHits = collector.getTotalHits();
System.out.println("所有的暂时:"+numTotalHits);
//int start=1;
// int sEnd=3;
for(int i=0;i<numTotalHits;i++){
doc = search.doc(hits[i].doc);
System.out.println(doc);
}
/*Hits hit = search.search(query);
for(int i=0;i<hit.length();i++){
System.out.println(hit.doc(i));
}*/
} catch (Exception e) {
e.printStackTrace();
}
}
}
所有的暂时:2
Document<stored/uncompressed,indexed,tokenized<bookname:“黑西装”直奔克拉厅的柜台前,称要买之前看中的33万元的裸钻。得知是前一天预约的顾客后,营业员顿时兴高采烈地拿出了裸钻。“黑西装”取出了自带的放大镜,还拿出了一个镊子,仔细观察钻石的成色。大约10分钟后,“黑西装”查看结束,将裸钻还给营业员,表示十分满意,提出1小时后来取货。在“黑西装”查看裸钻的时候,“白夹克”并未凑过来,而是在旁边挑选其他饰品。>>
Document<stored/uncompressed,indexed,tokenized<bookname:24日早晨,民警追查到,这3人目前正住在闵行区金汇路颐美庭园酒店内。当天下午3点半左右,民警在306房间内将“黑西装”李银林和“白夹克”万尧荣等3人抓获。此时距离钻石被盗仅24个小时。经审问,李银林在拿镊子查看裸钻时,曾利用营业员低头的一刹那,伸手摸了摸自己的裤子口袋———短短几秒钟的时间,他便完成了调包。>>
分享到:
相关推荐
本篇文章将深入探讨MMAnalyzer的使用以及与之相关的两个核心JAR包:`jeasy.analysis.MMAnalyzer`和`lucene-core-2.4.1.jar`。 首先,MMAnalyzer是JeasyAnalysis的一部分,JeasyAnalysis是一个轻量级的中文分析库,...
"lucene-core-2.4.1.jar"是Lucene的核心库,包含了Lucene的基本功能,如索引构建、查询解析、搜索等功能。虽然2.4.1版本相对较老,但在当时,它已经相当成熟,能够支持各种复杂的文本处理任务。这个库是MMAnalyzer...
本文将深入探讨"je-analysis-1.5.3"和"lucene-core-2.4.1"这两个分词组件,以及它们在相关场景中的应用。 首先,让我们了解什么是分词。分词,即词语切分,是自然语言处理(NLP)中的基本任务之一,它的目标是将...
3. 选择“Select root directory”,浏览并选择刚刚下载的“lucene-2.4.1-src”文件夹,然后点击“Finish”。 项目结构理解: Lucene 2.4.1的源码结构清晰,主要分为几个核心模块,如core、analysis、demo、 ...
1. **性能优化**:相较于早期版本,Lucene2.4.1在性能上进行了优化,提高了索引和查询的速度,降低了内存消耗,使得大规模数据处理更为高效。 2. **新特性和改进**:这一版本可能包含了一些新的API和功能增强,如更...
总结来说,Lucene 2.4.1是搜索引擎开发的重要工具,其源码的分析与学习对于提升对全文检索技术的理解至关重要。无论是熟悉核心包的类与接口,还是实践demos包中的示例,都将有助于开发者更好地利用Lucene构建高效、...
《Lucene2.4.1 叶明》这本帮助文档可能是针对 Lucene 2.4.1 版本的一份详尽指南,可能包含了以下内容: 1. **安装与配置**:如何下载、安装和配置 Lucene 2.4.1,以及与现有项目的集成方法。 2. **基本用法**:...
1. **.plugins**:这个目录包含了Luke所依赖的各种插件,这些插件可能扩展了Luke的功能,比如支持新的Lucene版本或提供特定的分析器。 2. **thinlet**: Thinlet是一个轻量级的Java GUI库,Luke使用它来构建用户...
很好的lucene2.4.1 api文档 我经常用来查的,凑到20字没
**Lucene 2.4.1 API 手册** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了一个高级、灵活的搜索功能框架,允许开发者轻松地在应用程序中实现复杂的全文检索功能。Lucene 2.4.1 版本是该库的...
lucene 2.4.1包 暂时最新的 希望对大家有帮助
《深入剖析Lucene 2.4.1源码:揭示开源搜索引擎的秘密》 Apache Lucene是一个高度可扩展的全文...无论是对搜索引擎技术感兴趣,还是需要开发相关应用的开发者,深入研究Lucene的源码都将是一次富有价值的学习经历。
1. 创建索引:开发者首先需要实例化一个IndexWriter对象,配置好相应的目录(如lucene-2.4.1目录下的索引文件),然后添加Document对象,每个Document对应一个实际的文档。 2. 添加文档:Document对象包含多个Field...
"lucene-2.4.1-src"这个文件名暗示了源代码是学习的重要部分。通过阅读和分析源码,你可以更深入地理解Lucene的内部机制,这对于解决问题和进行二次开发非常有帮助。 总的来说,Lucene 2.4.1作为一个功能强大的搜索...
综上所述,"lucene-2.4.1.tar.gz"不仅是一个包含Lucene源代码和库的压缩包,更是对信息检索技术的一种封装,为开发者提供了强大的全文搜索工具,可用于构建各种搜索应用。通过对这个版本的深入理解和运用,开发者...
在本文中,我们将深入探讨其核心库——lucene-core-2.9.2.jar,以及与之相关的lucene-1.4.3.jar.license.txt文件。 一、Apache Lucene简介 Apache Lucene是Apache软件基金会的一个顶级项目,它的设计目标是提供一...
免分数共享出来,欢迎大家下载, 2.4.1版本的
- Elasticsearch基于Apache Lucene构建,采用分片和副本的概念,使得数据可以在多台机器上分布,提供高可用性和容错性。 - 分片允许数据横向扩展,每个分片可以独立地作为一个完整的搜索引擎工作,数据可以通过...