lucene更新索引:Lucene.Net 2.3.1开发介绍 3、索引( 7)来源: 发布时间:星期四, 2009年1月15日 浏览:8次 评论:0
5、IndexWriter
索引这部分最后讲是IndexWriter如果说前面提到都是数据结构那么IndexWriter就是业务封装无论述DocumentField还是看不见Segment,Term都是对数据存储逻辑抽象IndexWriter包装了操作过程 当然这里不会讨论IndexWriter每个细节这里主要介绍IndexWriter常使用方法和实际使用中遇到部署问题 5.1 IndexWriter常用思路方法 IndexWriter使用方法很简单前文有例子在接触Lucene.Net 文中代码2.1.1就是最简单使用方法可以看到IndexWriter构造很重要AddDocument思路方法也很重要有这两个思路方法就可以建立索引了其它思路方法都是对建立索引过程或者结果进行了优化或者是提供了些索引中或者索引后数据比如常用Optimize思路方法就是对索引进行优化使得搜索能够效率更高还有些常用思路方法(按字母排序): (1)、AddIndexes思路方法是合并区别部分索引这个思路方法很有用比如用5个线程在5个目录下建立索引然后用这个思路方法把5个索引合并为个这样就能提高索引效率; (2)、Close思路方法是最后使用思路方法除了能够去除对文件锁定外还能起到Flush思路方法作用这个思路方法非常重要在IndexWriter例子建立后无论出现什么样问题哪怕崩溃都定要显式该思路方法要不然索引会处于锁定状态无法解除; (3)、DeleteDocuments是用来删除索引这里只能指定Term删除使用价值不是太高; (4)、Flush思路方法是把缓冲数据写入个思路方法在不想关闭索引但是要清空缓冲区时候使用; (5)、Optimize思路方法是优化索引思路方法如果索引数据很大则这个思路方法会耗费很长时间另外就是如果索引文件这个时候被读取并不能达到删除废弃文件目 (6)、SetMaxBufferedDocs思路方法是规定缓冲区能够缓冲Document个数写硬盘要比写内存慢很多这个值设置得越大暂时存储到内存Document就会越多; (7)、SetMaxFieldLength思路方法设置Field最大长度; (8)、UpdateDocument用来更新索引但是实际上并不是真正更新而是先删除再添加如果不进行优化那么至少会增加两个文件个记录了增加个记录了删除 5.2 索引部署 索引部署根据索引大小而趋向复杂我认为至少是平方增长复杂度增长原因在于索引大小增长将会引入更多需要考虑原因比如索引重建索引优化时间多索引部署等而分布式部署基本上是目前最复杂部署方案 般来说应该个索引存储只应该由个IndexWriter来控制个存储不应该超过2G即使是2G每次索引更新都需要10分钟左右来优化索引至于如何分配索引要根据实际情况来决定而且要考虑诸如崩溃等情况 在Java版搜索引擎解决方案中有很多可以借鉴地方比如对于数据索引Compass索引方式可以参考;对于抓取式搜索引擎Nutch可以参考;分布式解决方案可以参考Hadoop如何实现像Compass样添加、删除、更新都能及时反映到索引当中站内搜索引擎般都会面临这样问题Lucene.Net已经为我们提供了实现思路方法至于实现逻辑需要你去研究 6、索引小节 本篇文章是索引部分完结篇从第篇到这里第 7篇主要介绍了两个东西个是Lucene.Net逻辑存储另外个就是如何操作逻辑存储在逻辑存储上讲得比较详细特别是有关权重部分而操作则只简单提下逻辑存储有助于理解Lucene.Net索引流程而操作则只是相当于CPU指令业务逻辑需要自己去实现相信看了以上 7篇文章有助于对Lucene.Net索引理解当然这里只讲了表面上东西更加深入地理解Lucene需要从更加底层Directory入手索引部分就暂时写到这里了后面将进入搜索问题探讨A 0
相关文章
读者评论发表评论 |
|