六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 54|回复: 0

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

[复制链接]

升级  2%

11

主题

11

主题

11

主题

秀才

Rank: 2

积分
53
 楼主| 发表于 2013-2-5 01:19:17 | 显示全部楼层 |阅读模式
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.把需要更新很频繁的索引和更新不频繁的索引分离成两个目录(要有良好、严密的方案)
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表