DBLu 简介
一、为何需要DBLu
- 基于数据库的Web应用需要全文检索的能力
- 传统数据库的模糊匹配能力很差,像%like% 这样的查询会吃掉数据库服务器90%以上的数据库资源,因此系统需要将精准匹配保留个数据库系统,而将模糊匹配交给独立的检索系统
呵呵,我们的mysql经常因为用户的like操作而死掉:(
二、DBLu的特点
- 基于Lucene(高效、全文检索、平台无关等);
- 部署简单 - 整个应用打成war包,可使用各种应用部署工具直接部署;
- 配置灵活 - 配置文件提供的配置选项可以满足用户的各种需求;
- 使用代价小 - 现有应用需要改动的只是将原向数据库引擎提出的搜索请求改为向DBLu发出。
三、索引规则
- 一次性全部创建:
用户对数据表进行一次性的索引,以后不再对索引库进行更新操作;
- 先全部创建,然后按计划更新(包含更改和追加操作):
执行对数据表的一次性创建索引后,以后按计划局部更新数据表中的数据到索引库中;
- 先全部创建,然后按计划追加:
执行对数据表的一次性创建索引后,以后按计划局部追加数据表中的数据到索引库中;
- 按计划全部重建:
按计划,将数据表对应的索引库进行全部重建。
说明,索引规则最好根据数据表的情况来进行设置,对于一个数据表可以使用多种规则。一般情况下,对于一个数据表最好使用 “按计划全部重建”+按计划追加“两种规则。因为更新的情况下,索引机器的资源消耗太大,所以一般只能在应用服务器自己做更新日志,提供数据说明那些记录更新的情况下才使用,而针对日志式更新的工作还没有做,所以不建议使用第二种”按计划更新“规则。
四、其他注意问题
- 如果删除某个数据表对应的索引库,而描述该表的配置文件仍然生效,则表对应的索引库将会指定的时间间隔内被重建;
- 当删除、添加、更新配置文件的情况发生时;
- sql 中的 where、orderby、limit是可变化的情况;
- 按词截段,指定段的长度,最多多少段,截取后的长度限制(相当于Highlight啦)。
五、关于客户端
- 客户端主要工作是将XML数据转换成相应的对象object;
- PHP客户端使用SAX解释器,DOM存在PHP4和5的兼容问题。