项目中用到了lucene构建索引,但是公司有自己的分词器,为了保持跟其它模块的一致性,必须将分词器整合进lucene中,其实网上这样的例子会比较多,不过很多都是不完整的,自己在这里贴出来个完整的,思想比较简单,基本就是按照自己的分词器分完词之后按照空格分隔,然后利用lucene的WhitespaceTokenizer来重新进行分隔。
代码如下:
其中PreProcess是分词服务的客户端,我们将分词利用thrift封装成了一种服务,基于此服务可以实现比较定制化的功能,在函数tokenize中可以自定义一些规则比如停用词等。