Solr自定义分词器
来源:互联网 发布:在巴厘做异性spa 知乎 编辑:程序博客网 时间:2024/06/10 23:08
摘要: 在对英文句子分词的时候,一般采用采用的分词器是WhiteSpaceTokenizerFactory,有一次因业务要求,需要根据某一个特殊字符(以逗号分词,以竖线分词)分词。感觉这种需求可能与WhiteSpaceTokenizerFactory相像,于是自己根据Solr源码自定义了分词策略。
业务场景
有一次,我拿到的数据都是以竖线“|”分隔,分词的时候,需要以竖线为分词单元。比如下面的这一堆数据:
有可能你拿到的是这样的数据,典型的例子就是来自csv文件的数据,格式和下面这种类似:
分词思路
在Solr的schema.xml
文件中,有这样的配置
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
对于字段类型text_ws
,指定了一个分词器工厂WhitespaceTokenizerFactory
,根据这个类,可以实现通过空格来分词,那么我通过竖线分词的代码应该与之类似。
修改源码
在Java工程中引入如下jar包:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
参照WhitespaceTokenizerFactory
的源码,写一个自己的MyVerticalLineTokenizerFactory
,内容基本不变:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
具体做分词的MyVerticalLineTokenizer
代码如下
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
这里最主要的方法就是isTokenChar
,它控制了分词的字符,如果需要使用逗号分词的话,字需要将这个方法修改成下面这样:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
整合
代码写好了,怎么使用呢?首先,需要把刚才的java文件打成jar包。我使用的是Eclipse,直接选中两个类文件,右键 -> Export -> JAR File -> Select the export destination: ->选择输出路径,填一个jar名字:MyVerticalLineTokenizerFactory -> Finish
得到的MyVerticalLineTokenizerFactory.jar文件大约3KB,将改文件放置到.\solr_home\lib下,在shcema.xml
中定义自己的field
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
注意这里的class
是刚才自己写的分词器的完整类名。
打开Solr主页,在Analysis页面测试一下,是否实现了预期?
代码仓库:GitHub
Jar包文件:CSDN下载
- solr 自定义分词器
- solr自定义分词器
- solr自定义分词器
- Solr自定义分词器
- solr自定义分词器
- Solr配置IK分词器自定义词库
- Solr自定义分词器-通过特殊字符分词
- solr中Analyzer(分词器)及其自定义
- [Nutch]Solr配置自定义的中文分词器mmseg4j
- Solr 中文分词器
- solr分词器
- solr 中文分词器
- solr配置中文分词器
- solr安装mmseg4j 分词器
- solr 中文分词器配置
- solr配置中文分词器
- solr集成IK分词器
- solr添加IKAnalyzer分词器
- POJ3069
- java创建QRCode二维码的三种方式
- C++复习--链表数组
- 树形dp学习、
- OpenAirInterface 使用USRP时UHD库的问题(备注recover办法)
- Solr自定义分词器
- 上传照片预览js
- 论文笔记-deep learning-detection (2017)
- Java中静态代码块以及构造方法等执行顺序
- 加载JavaScript的方法
- Android TextView富文本、显示不同的颜色
- Android Studio 配置 toString( ) 模板,定制 JSON 格式字串的步骤
- tensorflow可视化即tensorboard可视化无法加载数据的原因及其解决方案如下
- ORACLE账户提示EXPIRED(GRACE)问题解决