Lucene自定义排序机制问题的研究.docVIP

  • 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

文档评论(0)

1亿VIP精品文档

相关文档