前几天看到了TheServerSide上面的一篇文章I Love Lucene,感到对自己很有帮助,稍微总结了一下理理思路。
by Dion Almaer January 2005
Introduction
简要介绍了TheServerSite原来使用的搜索的方案,并由此引出Lucene。
High level infrastructure
从高层介绍Lucene的方案,这一方案主要分成了两大部分,一部分是建立索引,另一部分是对索引进行搜索。分别介绍了这两部分的主要的接口IndexBuilder和IndexSearch。
Building the Index: Details of the index building process
全文最重要的一个组成部分。该部分介绍了以下四个内容:
1. 应该索引的字段
2. 索引的方式:增量索引、批量索引
3. 索引源的类型
4. 索引结果的rank
What fields should compromise our index?
讲了一下不同的索引字段使用的数据类型的问题
What types of indexing?
采用了增量索引和批量索引结合的方式,定义了一个增量索引的间隔,每隔这一间隔进行一次批量索引,在间隔内的时间内进行增量索引。同时还介绍了一下Lucene中如何删除索引记录。
What to index?
ThreadIndexSource
介绍对不同的索引源索引的问题,如对数据库中的数据索引以及对文件系统中的文件的索引。还介绍了一下索引TheServerSide的论坛中的帖子时引出的一个小技巧。
How to tweak the ranking of records?
对不同的字段赋以不同的权值来对一个文档进行较合理的rank
Searching the index
Lucene的使用主要看来是建立索引比较复杂,搜索索引极其简单,这里稍微花了一点篇幅就讲清了都,主要介绍了IndexSearch类中的search方法和查询解析类CustomQueryParser。
Configuration: One place to rule them all
这部分主要介绍如何使用XML文件对搜索中的一些参数(如索引存放位置、字段权值等)进行动态配置,和Lucene其实没什么关系,主要还是说的是IoC(控制反转)的东西,讲了一下Apache Digester的使用。
XML Configuration File
Digester Rules File
Web Tier: TheSeeeeeeeeeeeerverSide?
用户搜索使用的Web界面,MVC结构。
SearchAssembler Web Action
根据用户输入构造查询语句,并讲查询语句交给IndexSearch处理,同时还负责封装查询结果。
Search View
表示层使用JSP ( for legacy reason)。根据TheServerSide上面的帖子回复,似乎说TheServerSide以后要用Apache的Tapestry了
Conclusion
总结,就是说Lucene很好。