中文分词主要目的,一是为了更加准确的搜索,二是为了减少索引文件的大小而加快搜索速度。
举例说明:生产和服务
分词后:生产 服务
1. 准确:搜索生产,服务时,都能够正常搜索。要不搜索"和服“时也会匹配,这样的搜索是没有意义的;
2. 单字搜索:搜索”生“”产“”和“”服“”务“,好像意义不大,匹配程序不好。当然分词后根据搜索不到;
3. 如果确实需要这种搜索,那不要用分词。直接使用lucene自带的,CJK就好。是单字拆分,也注是每一个汉字都是一个词。这样就能满足你通过单字的搜索。
 但会产生几个问题,1是搜索匹配可能不好,2是搜索速度会慢 3是索引文件很大。

解决方案 »

  1.   

    补充一句,没用过paoding, 不知道会把“生产和服务“分成什么样,也许是
    生产  和 服务
    生产 和服 服务需要你试试了。不过好的分词算法是很复杂的。
      

  2.   

    Lucene有其自己的分词类StandardAnalyzer和Analyer
    甚至你自己可以调用其他的分词工具,然后建索引
      

  3.   

    呵呵,
    1. 建立“字”拆分对照表;如”研“对应,”石“、”开“;
    2. 自己写个analyzer或filter,逐个汉字过滤,遇每个汉字时,在对应表中搜索,把搜索到的汉字索引;具体搜索对应表时,可以用lucene或采用直接加载到内存中会获得更好的性能,这个可以参考庖丁解牛、imdict等;