ZhongZiChang’s Dao

August 29, 2006

DBLu 简介

Filed under: DBLu Project — 钟 子昌 @ 4:12 pm

一、为何需要DBLu

  • 基于数据库的Web应用需要全文检索的能力
  • 传统数据库的模糊匹配能力很差,像%like% 这样的查询会吃掉数据库服务器90%以上的数据库资源,因此系统需要将精准匹配保留个数据库系统,而将模糊匹配交给独立的检索系统

呵呵,我们的mysql经常因为用户的like操作而死掉:(

二、DBLu的特点

  • 基于Lucene(高效、全文检索、平台无关等);
  • 部署简单 - 整个应用打成war包,可使用各种应用部署工具直接部署;
  • 配置灵活 - 配置文件提供的配置选项可以满足用户的各种需求;
  • 使用代价小 - 现有应用需要改动的只是将原向数据库引擎提出的搜索请求改为向DBLu发出。

三、索引规则

  • 一次性全部创建:

用户对数据表进行一次性的索引,以后不再对索引库进行更新操作;

  • 先全部创建,然后按计划更新(包含更改和追加操作):

执行对数据表的一次性创建索引后,以后按计划局部更新数据表中的数据到索引库中;

  • 先全部创建,然后按计划追加:

执行对数据表的一次性创建索引后,以后按计划局部追加数据表中的数据到索引库中;

  • 按计划全部重建:

按计划,将数据表对应的索引库进行全部重建。

说明,索引规则最好根据数据表的情况来进行设置,对于一个数据表可以使用多种规则。一般情况下,对于一个数据表最好使用 “按计划全部重建”+按计划追加“两种规则。因为更新的情况下,索引机器的资源消耗太大,所以一般只能在应用服务器自己做更新日志,提供数据说明那些记录更新的情况下才使用,而针对日志式更新的工作还没有做,所以不建议使用第二种”按计划更新“规则。

四、其他注意问题

  • 如果删除某个数据表对应的索引库,而描述该表的配置文件仍然生效,则表对应的索引库将会指定的时间间隔内被重建;
  • 当删除、添加、更新配置文件的情况发生时;
  • sql 中的 where、orderby、limit是可变化的情况;
  • 按词截段,指定段的长度,最多多少段,截取后的长度限制(相当于Highlight啦)。

五、关于客户端

  • 客户端主要工作是将XML数据转换成相应的对象object;
  • PHP客户端使用SAX解释器,DOM存在PHP4和5的兼容问题。

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress