`
evil_bdef
  • 浏览: 796 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类

基于Lucene的超强配置式索引应用

阅读更多
现在都说大数据量,数据量庞大的数据直接访问数据库不是一般的慢,那时就得使用高效率的文件索引
    刚接触Lucene时已经出到4.4版本  (现在都4.6了,5.0也快出了),当然是Down了最新版本,使用之下发现数据才800万查询效率非常低 ,然后拼命的优化优化优化 ,没什么效果  
    Google很久之后看了一编Lucene 4.3与3.5版本的比较,觉得博主测试得很详细 ,看来4.x版本的Lucene还没3.5的好,当然最后还是牺牲点磁盘换取更高的效率,各位可以看看测试:
         Lucene4.3和Lucene3.5性能对比(一)
         Lucene4.3和Lucene3.5性能对比(二)


    然后--这个配置索引
        一般的Web项目,Spring容器管理Bean,数据库连接现为Oracle的JDBC
        首页上有个单次效率测试和简单的压力测试(因为这里主要是服务器端,所以只配置了Servlet)(web.xml)
        对外系统调用也有Hessian和HttpInvoker远程服务(remoting-servlet.xml)
        使用quartz定时器控制索引的全量和增量线程(applicationContext-service.xml)
    再说说这个配置方式的强大之处(config.xml解说)~~~
        1.数据库URL、用户名、密码这些没神马好说的啦
        2.自定义索引文件存放路径:index.dir
        3.全量建索引时并发线程池大小:indexMaxThread
        4.索引文件数量:indexMaxNumSegments(这个数量视全部索引大小来定,一般在50~200左右速度比较快)
        5. 是否把索引内容加载进内存:useRAMDirectory(俺觉得这是本Project之亮点,硬盘不怎么给力或者索引本身不算大大,而内存又挺充足的,可以试试这个开关,体验飞一般的赶脚)
        6. 一般索引这类服务都是很重要的,那就得做负载均衡和热备份啦:tomcatFlag,otherTomcatFlag(支持几个Tomcat同时对某数据库表进行索引,简单配置一下本身Tomcat代表的标识以及其它Tomcat标识,又一亮点)
        7. 重点就是下面索引的具体配置,一个应用支持多个毫无关系的索引,每索引又多库表(比如:可以配置地图的点、线、区域三张表归为一个地图索引;又可以把机房、局站等资源类型的数据配置为另一个独立的索引,在同一个Tomcat上运行)


    . 说到Lucene,那就必须得带着分词,本文使用的分词是自已写的阶乘切词算法,不管字符串是中文还是数字、字母,可以按顺序1、2、3、4个字的切成词,最长分词可以在代码设置,比之Standardanalyzer查询准确,又不用像庖丁哪样要字典库切词。具体可以查看InforesTokenizer类


    对数据库的要求:要做索引的表,首先要做一个触发器,新增、修改、删除数据时都同步到日志表中,日志表包括字段:
        主键:LOGID---NUMBER---
        操作类型:OPER_TYPE---NUMBER---新增、修改、删除,数值可以自己定义
        记录原表主键:XXX_ID---一般为NUMBER---视自己情况
        Tomcat标识字段:TOMCAT_1---NUMBER(1)---如果还有其它Tomcat在做负载均衡,每个Tomcat增加一个自己标识的字段

    最后贴上代码,好的话,点个赞噢~~~
分享到:
评论
2 楼 wubudomain 2014-03-21  
写得很好啊
1 楼 evil_bdef 2014-01-02  
evil_bdef 写道
俺自己觉得这么犀利的东东,怎么无人爱呢  

求楼下回答一下~

相关推荐

Global site tag (gtag.js) - Google Analytics