- 2
- 0
- 约3.65千字
- 约 9页
- 2018-10-11 发布于福建
- 举报
Lucene自定义排序机制问题的研究
Lucene自定义排序机制问题的研究
摘 要
本文设计了一个Lucene样例程序,实现了完整的索引和搜索功能,并在搜索功能里自定义了多种排序方法,同时分析了核心源代码,上述分析及源代码对相关的工程实践有着较大的参考价值。
【关键词】Lucene 排序 搜索
1 问题的提出
Lucene是一个开源的全文检索引擎架构,由Apache软件基金会支持和提供,它提供了完整的查询引擎和索引引擎,软件开发人员可以方便地在目标系统中实现全文检索功能,或者以此为基础建立完整的全文检索引擎。最近几年来,Lucene成为最受欢迎的免费Java信息检索程序库。
当Lucene返回匹配搜索条件的文档时,一般是按照默认评分对文档进行排序的。但是有时候,我们可能需要按照其它标准对搜索结果进行排序,这就需要自定义排序规则,下面借助一个案例,深入探讨Lucene的自定义排序机制。
2 建立索引并自定义排序规则
2.1 建立索引
首先,准备要索引的内容,本案例拟索引书籍信息,具体包括书名(name)、作者(author)、类型(name)、出版社(pub)、价格(price)和出版日期(date)等内容,定义如下数组:
String[] names={红楼梦,水浒传,三国演义,西游记,国富论};
String[] authors={曹雪芹,施耐庵,罗贯中,吴承恩,亚当斯密};
String[] types={小说,小说,小说,小说,经济};
String[] pubs={人民文学出版社,人民文学出版社,光明日报出版社,人民文学出版社,上海三联书店};
double[] prices={44.30,35.10,29.20,32.80, 29.40};
String[] dates={2000-5-1,1997-1-1, 2000-5-1,1980-5-1,2009-3-1};
其次,决定索引的存储位置,鉴于本案例数据少,可将索引直接放在内存中,因此创建如下Directory对象。
directory=new RAMDirectory();
其中,directory是个类级实例变量,表示索引的存储位置。
再次,创建IndexWriter对象,用以创建和维护索引。
IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_4_10_2,
new SmartChineseAnalyzer());
IndexWriter writer=new IndexWriter(directory, config);
其中,IndexWriterConfig对象持有创建IndexWriter对象时的所有配置信息,Version指明了Lucene的版本号,SmartChineseAnalyzer对象是Lucene提供的中文分析器,用来在索引期间对中文内容进行分词。
最后,通过循环索引书籍信息。
for(int i=0;ilt;names.length;i++)
{
Document doc=new Document();
doc.add(new StringField(name,names[i],Store.YES));
doc.add(new StringField(author,authors[i],Store.YES));
doc.add(new StringField(type,types[i],Store.YES));
doc.add(new StringField(pub,pubs[i], Store.YES));
doc.add(new StringField(date,dates[i],Store.YES));
doc.add(new DoubleField(price, prices[i],Store.YES));
writer.addDocument(doc);
}
mit();
2.2 自定义不同排序标准进行搜索
首先,创建IndexSearcher对象,这个对象通过IndexReader实现对索引的搜索功能。
IndexReader reader=DirectoryReader.open(directory);
IndexSearcher searcher=new IndexSearcher(reader);
其中,IndexReader是一个抽象类,它提供了在任意时间点访问索引的接口,
其次,创建搜索条件。
Term term=new
您可能关注的文档
最近下载
- BRANDTECH VACUUBRAND 旋片泵 RZ2.5、RZ6、RZ9、RZ16 说明书用户手册.pdf
- IPC 7527-2012焊膏印刷要求 中文版.pdf VIP
- 血液病人预防感染ppt课件.pptx
- IPC-7525通用标准(钢网).PDF VIP
- 烟草工业.doc VIP
- QGW 203008-2018 风力发电机组通用技术规范 紧固件-C.docx VIP
- 2025浙江嵊州农商银行综合柜员岗招聘笔试历年典型考题及考点剖析附带答案详解.docx
- 烟草对全球健康的威胁.pptx VIP
- GB_T 12686-2017 草甘膦原药.pdf
- 中西医结合防治儿童反复呼吸道感染专家共识.pptx VIP
原创力文档

文档评论(0)