小弟 最近在做有关lucene的东西,
想请教大家几个问题:
1,关于lucene的中文分词器,哪个比较好呢?! 网上的说法不一,测试结果也不一样,真的不知道相信谁了,希望做过的朋友给点建议,对了 我是要做个垂直搜索引擎!2,关于lucene检索数据库方面,需要注意的主要地方都有哪些呢?!(查询结果缓存...)3,关于lucene的优化方面,我对于hits结果集缓存方面的处理,有什么好的方式么?!是存在硬盘中缓存?!设置缓存目录还是放在内存中缓存??!谢谢 大家 ! 期待你们的解答!

解决方案 »

  1.   

    建议参考solr,nutch
    分词要看你的业务数据的需求了,跑丁就不错的哦。当然,中科院的也算可以了。
    你的问题能 再具体些吗?
      

  2.   

    垂直搜索引擎建议采用heritrix+solr,lucene不是成熟的搜索引擎,它只是一个可以让你迈向成功搜索引擎的宝库而已。参考下solr吧,这个目前而言还是很不错的。
      

  3.   

    是存于内存,还是数据库,异或硬盘呢?
    呵呵,这个就要看你自己的业务需要了。
    这里可以综合考虑,可以内存+数据库+硬盘的方式
    其实数据库现在也是可以无限扩盘,据我所知oracle就可以不断的增加硬盘来拓宽存储容量。mysql可以考虑采用replication啦。
    一般在内存里可以拥有很不错的执行速度,但内存始终会有临界点的,一旦突破临界点就会变得很慢了。因为你没有多余的内存执行其他的task了。
    至于用硬盘的话,就会面临io的问题。这时考虑异步io,主要方式io阻塞。硬盘的效率肯定是低于内存的,在内存效率上不去的时候可以考虑组合硬盘。
    最后,数据库真是很不错的存数据的地方呢。用数据库存放索引是个不错的主意,可以考虑下。毕竟数据库在查询效率等各方面都是优于搜索引擎lucene的,除了全文检索这块。
      

  4.   

    lucene的中文分词器还是需要提高的,在中文分词方面还有很多弊端。对于要求不高的用户来说是不错的选择。
      

  5.   

    现在我想这样做, 就是当用户输入一个keywork的时候,我想让搜索引擎去特定的索引里面进行查找,
    我想按照26个字母来建立索引,得到搜索的关键字之后先判断汉字的拼音首字母,然后去这个拼音首字母的索引里面搜索。 但是问题是 我怎么才能把包含所有关键字的索引建立在一起呢! 或者是合并到一起呢?!因为分类比较多,索引也比较大,所以我想用这个做第一次的粗过滤!
    小弟初接触 希望大家多关照
      

  6.   

    另外 还想请教一下,关于更新索引各位都是怎么做的呢?!
    当我数据库有变化了,是实时的更新索引 还是定时更新,如果实时更新 那么删除的时候怎么办呢!?
    也是实时更新索引么?!  lucene的锁怎么来处理的, 还有对于并发访问的时候怎么办,(正在删除索引的时候,有人搜这个关键字... 或者是刚添加的资料正在更新索引不能搜索到最新的结果...)希望大家能够给我点指导! 
      

  7.   

    索引文件应该在更新数据库(包括删除)时同时更新。如果同一内容修改过于频繁(只有大型互联网才会如此)就不要用这种索引。
    在更新索引的时候,lucene会建立排它锁。