用lucene与ictclas4j建立自己的全文检索

     lucene是个不错的逆向索引模块,而且是开源java的(注意,它尽是个模块不是套搜索引擎系统,基于它的nutch系统才是定位于这一目标的)。lucene解决了建索引、检索、存储(分布式存储要靠另外个咚咚hadoop)等问题。但对于中文检索中的分词问题,没给出个好的解析器。
     ictclas4j是个根据中科院的概率分析系统老版写的java分词系统。存在两个问题,一是只解决了单句分词问题,缺乏词的位置信息。二是存在个bug(包括中科院的那个VC版的),具体bug久了记不清,好像是在分有"/"的句子时会有问题。
     将lucene与ictclas4j还要解决个解析器结构问题。主要是由于lucene处理是采用流式结构,就相当于一个字符流流过解析器,然后不断从中取出词。然后,ictclas4j是基于句的。因此需要有个缓冲,先从字符流取出一个完整的句子,然后交给ictclas4j分词,ictclas4j给出一串词,然后解析器一个给向lucene返回词,直到取完,然后再从头开始,读字符流、断句....
     这其中有两个问题,一是从流中读数据,读过了就不能再读了,但你又无法确定读多少一句句子结束。这个问题可参看“编译原理”中词法分析中的双缓冲结构解决。二是断句问题。断句目前只有通过标点、空格等字符方式断。
     另外,lucene用于网页分析,不妨用nekohtml.jar解析HTML文件提取其中的文本,其他开源的几个好像有点不够鲁棒。当然nekohtml.jar也不是全能的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章