论坛首页 Java企业应用论坛

用lucene的注意事项(抛砖引玉)

浏览 2923 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-06-05   最后修改:2009-09-20
1.同一个索引目录,IndexWriter和IndexReader确保要唯一,他们两个都是线程安全的,可以被多个线程调用。 让专门的类去管理(实例化和销毁)IndexWriter和IndexReader。

2.尽量减少不必要的储存,只储存哪些要在返回结果里的字段,不需要检索的内容就不要建索引。索引太大了,对更新索引的效率都会有影响。

3.不要强制kill建索引的程序,强制kill很有可能导致索引坏掉,每次关闭前必须保证所有的IndexWriter已经正常的关闭。

4.读先都很频繁的情况下, IndexReader.reopen产生新的IndexReader实例 ,需要关闭旧的实例。关闭的IndexReader才能让它释放文件。否则会导致打开文件过多的异常

5.如果要做读写分离。同步索引数据要按如下步骤进行:a.停止所有建索引的程序。b.IndexWriter.commit() c.优化所有索引 d。最后再coping or rsyncing。

6.排序字段和范围字段的格式处理,排序字段需要补零等操作。范围字段尽量使集合最小化。比如:要按时间来范围搜索,如果只需要精确到天。那就把字段格式成(yyyyMMdd) 形式,只需要精确到月,格式成(yyyyMM)。如果某个字段即要排序就要范围搜索,应该考虑把索引成两个字段。

7.每个Document最好都分配一个唯一key,这个key可以是数据库里每个唯一键,也可以是多个字段的组合。用于更新和删除索引

8.把需要更新很频繁的索引和更新不频繁的索引分离成两个目录(要有良好、严密的方案)




   发表时间:2009-08-24  
索引:
http://wiki.apache.org/lucene-java/ImproveIndexingSpeed

搜索:
http://wiki.apache.org/lucene-java/ImproveSearchingSpeed


你看了后 会发现,你的总结上面 还有很多可以提升的地方  :〉 包括
indexwriter参数设置 doc 对象池使用 。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics