CLUCENE-0.9.10 索引与优化过程
一.文件索引过程 主要流程描述 IndexWriter writer("ndx", &an;, true); writer.setMergeFactor(10); writer.setMinMergeDocs(10); Document *lpDoc = new Document; lpDoc->add(*new Field("content", "This is demo content.", true, true, true) ); writer.addDocument(lpDoc); delete lpDoc; writer.close(); 下面描述该流程 1.IndexWriter writer("ndx", &an;, true); directory = FSDirectory::getDirectory("ndx", true); 从一个全局的列表中取得一个对象 如果对象不存在,则新建一个并加入到列表中 主要目的是为了使用同一个目录只使用同一个FSDirectory对象 新建目录时删除该目录下所有文件级子目录 analyzer = an; 该对象由对象外部创建 segmentInfos = _CLNEW SegmentInfos; 建立一个SegmentInfos对象,该对象包含一个SegmentInfo对象的列表 建立时指定了SegmentInfo对象的列表并不在移除指针时删除SegmentInfo对象 一个SegmentInfo对象包括其名称(用于文件名前缀)和文档数 closeDir = true; 指定是否在索引对象关闭close时,是否同时调用目录的close函数 缺省为关闭目录对象 similarity = CL_NS(search)::Similarity::getDefault(); 取得缺省的文档分值score计算对象,如果不存在则建立 可以自己实现一个Similarity的继承类,然后用Similarity::setDefault方法设置成缺省的 变量Similarity* _defaultImpl用于保存缺省对象 ramDirectory = _CLNEW TransactionalRAMDirectory; 建立一个TransactionalRAMDirectory对象,该对象包含一个事务取消时的删除文件列表及恢复文件列表 同时还包含一个当前文件列表 恢复文件列表自动删除key和value,删除文件列表和当前文件列表则不自动删除 LuceneLock* newLock = directory->makeLock("write....