jforum中的 lucene

(1) 通过JForumBaseServlet类中的startApplication方法,启动了ConfigLoader.startSearchIndexer(); 
(2) ConfigLoader类中的startSearchIndexer,执行了SearchFacade.init() 
public stati c void startSearchIndexer()
{
SearchFacade.init();
}
(3) SearchFacade类, 
主要是创建了静态类SearchManager;
执行了searchManager.init();
(4) 接口类 interface SearchManager 
class LuceneManager implements SearchManager
LuceneManager类:
创建了3个 类:
private LuceneSearch search;
private LuceneSettings settings;
private LuceneIndexer indexer;
这样在初始化的过程中,需要的类基本上都用到了。

(5) 然后在类GenericPostDAO(主要负责帖子的创建、删除、更新)中 
public int addNew(Post post)
{
try {
this.addNewPost(post);
this.addNewPostText(post);

// Search
SearchFacade.create(post);

return post.getId();
}
catch (Exception e) {
throw new DatabaseException(e);
}
}
增加一个帖子,此时使用SearchFacade.create(post);
(6) 进入SearchFacade.create(post), 
public static void create(Post post)
{
if (isSearchEnabled()) {
searchManager.create(post);
}
}
(7) 进入searchManager.create(post); 
调用 LuceneManager 中的 create方法:
public void create(Post post)
{
this.indexer.create(post);
}
(8) LuceneIndexer中的create方法: 
public void create(Post post)
{
Document document = this.createDocument(post);
writer.addDocument(document);
}
进行索引。

 删除、更新索引等操作最后都是通过LuceneIndexer类中的方法完成的。

你可能感兴趣的:(Lucene,jforum)