solr 中文分词相关(转载)
smartcn和ik的对比,来自http://www.cnblogs.com/hadoopdev/p/3465556.html
一、引言:
年的时候,就曾经有项目涉及到相关的应用(Lunce构建全文搜索引擎),那时的痛,没想到5年后的今天依然存在,切分效果、扩展支持、业务应用等方面依然不甚理想。收费的版本不提了,原因自不必言表,开源版本中,发现之前曾经活跃的版本,大多已经没落(好几年没更新了),存活下来的寥寥无几。我是一个守旧的人,评估版本的选择有些保守,至少目前为止,只看1.0正式版本之后的版本,0.XX的不在考虑范围之内,用了一个周末的时间,对比了十多款的样子,个人感觉源于中科院ICTCLAS的smartcn和IKAnanlyzer效果还是不错的。
二、结果对比
2.1 原始文本
"lucene\分析器\使用\分词器\和\过滤器\构成\一个\"管道",文本\在\流经\这个\管道\后\成为\可以\进入\索引\的\最小单位,因此,一个\标准\的分析器有两个部分组成,一个是分词器tokenizer,它用于将文本按照规则切分为一个个可以进入索引的最小单位。另外一个是TokenFilter,它主要作用是对切出来的词进行进一步的处理(如去掉敏感词、英文大小写转换、单复数处理)等。lucene中的Tokenstram方法首先创建一个tokenizer对象处理Reader对象中的流式文本,然后利用TokenFilter对输出流进行过滤处理";
2.2 smartcn
lucen\分析器\使用\分词\器\和\过滤器\构成\一个\管道\文本\流经\这个\管道\后\成为\可以\进入\索引\最\小\单位\因此\一个\标准\分析器\有\两\个\部分\组成\一个\分词\器\token\它\用于\将\文本\按照\规则\切分\为\一个\个\可以\进入\索引\最\小\单位\另外\一个\tokenfilt\它\主要\作用\对\切\出来\词\进行\进一步\处理\如\去掉\敏感\词\英文\大小写\转换\单\复数\处理\等\lucen\中\tokenstram\方法\首先\创建\一\个\token\对象\处理\reader\对象\中\式\文本\然后\利用\tokenfilt\对\输出\进行\过滤\处理\
2.3 IKanalyzer
lucene\分析器\分析\器使\使用\分词器\分词\器\和\过滤器\过滤\滤器\构成\一个\一\个\管道\文本\在\流经\这个\管道\后\成为\可以\进入\索引\的\最小\单位\因此\一个\一\个\标准\的\分析器\分析\器\有\两个\两\个\部分\分组\组成\一个是\一个\一\个\是\分词器\分词\器\tokenizer\它用\用于\将\文本\按照\规则\切分\切\分为\一个个\一个\一\个个\个\个\可以\进入\索引\的\最小\单位\另外\一个是\一个\一\个\是\tokenfilter\它\主要\作用\用是\对\切出来\切出\切\出来\的\词\进行\行进\进一步\进一\一步\一\步\的\处理\如\去掉\敏感\词\英文\大小写\大小\小写\转换\单\复数\处理\等\lucene\中\的\tokenstram\方法\首先\创建\一个\一\个\tokenizer\对象\处理\reader\对象\中\的\流式\文本\然后\利用\tokenfilter\对\输出\流进\进行\过滤\处理\
我的选择:虽然IK有很多碎片,但是可以提高查询的准确率。碎片带来的效果就是,需要占用更大的空间。最终仍然选择IK,原因如下:
比如我输入"北京市美食",如果使用smartcn,将会分词为"北京市""美食",那么如果文档中存储的是"北京美食"就查询不到了。
以下介绍solr 5.X版本中IK的配置,来自http://www.cnblogs.com/zhangweizhong/p/5593909.html
1. 首先,下载IKAnalyzer ,下载
注意:以前老的IK 不支持Solr 5.3的版本
,请注意下载最新的。
2. 将ik的相关文件
拷贝到 webapps\solr\WEB-INF\lib 目录下
3. 在 solr_home\mycore1\conf\schema.xml 增加如下配置
<!-- 我添加的IK分词 -->
<fieldType name="text_ik"
class="solr.TextField">
<analyzer type="index" isMaxWordLength="false"
class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true"
class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
同时,把需要分词的字段,设置为text_ik,
<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="name" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
<field name="title" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
<field name="category" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="content" type="text_ik" indexed="true" stored="true" required="true" multiValued="false" />
<field name="price" type="double" indexed="true" stored="true" required="true" multiValued="false" />
<field name="color" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="orderBy" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="updatetime" type="date" indexed="true" stored="true" required="true" multiValued="false" />
4. 重启服务
注意:如果之前已经创建了索引,需要将之前的索引删掉,重新创建分词后的索引。
5. 在admin后台, analysis 下查看分词效果
1. 中文分词效果
2. 索引查询效果
6. 配置IKAnalyzer分词器的扩展词典,停止词词典
1. 将
文件夹下的IKAnalyzer.cfg.xml , ext.dic和stopword.dic 三个文件 复制到/webapps/solr/WEB-INF/classes 目录下,并修改IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext.dic;</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;</entry>
</properties>
段
注意: 记得将stopword.dic,ext.dic的编码方式为UTF-8 无BOM的编码方式。
solr 中文分词相关(转载)的更多相关文章
- Solr7.3.0入门教程,部署Solr到Tomcat,配置Solr中文分词器
solr 基本介绍 Apache Solr (读音: SOLer) 是一个开源的搜索服务器.Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现.Apache ...
- solr 中文分词 IKAnalyzer
solr中文分词器ik, 推荐资料:http://iamyida.iteye.com/blog/2220474?utm_source=tuicool&utm_medium=referral 使 ...
- solr 中文分词器IKAnalyzer和拼音分词器pinyin
solr分词过程: Solr Admin中,选择Analysis,在FieldType中,选择text_en 左边框输入 “冬天到了天气冷了小明不想上学去了”,点击右边的按钮,发现对每个字都进行分词. ...
- CentOS 配置solr中文分词器
第一步:使用IK-Analyzer.把分析器的文件夹上传到服务器. 第二步:需要把分析器的jar包添加到solr工程中. [root@bogon IK Analyzer 2012FF_hf1]# cp ...
- Solr学习总结(八)IK 中文分词的配置和使用
最近,很多朋友问我solr 中文分词配置的问题,都不知道怎么配置,怎么使用,原以为很简单,没想到这么多朋友都有问题,所以今天就总结总结中文分词的配置吧. 有的时候,用户搜索的关键字,可能是一句话,不是 ...
- Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- 中文分词之结巴分词~~~附使用场景+demo(net)
常用技能(更新ing):http://www.cnblogs.com/dunitian/p/4822808.html#skill 技能总纲(更新ing):http://www.cnblogs.com/ ...
- Solr6.5配置中文分词器
Solr作为搜索应用服务器,我们在使用过程中,不可避免的要使用中文搜索.以下介绍solr自带的中文分词器和第三方分词器IKAnalyzer. 注:下面操作在Linux下执行,所添加的配置在windo ...
- 全文检索Solr集成HanLP中文分词
以前发布过HanLP的Lucene插件,后来很多人跟我说其实Solr更流行(反正我是觉得既然Solr是Lucene的子项目,那么稍微改改配置就能支持Solr),于是就抽空做了个Solr插件出来,开源在 ...
随机推荐
- 【VS开发】C/C++预编译命令
C/C++中宏总结C程序的源代码中可包括各种编译指令,这些指令称为预处理命令或预处理器.虽然它们实际上不是C语言的一部分,但却扩展了C程 序设计的环境. 预处理指令的主要作用就是把通过预处理的内建功能 ...
- spring中的BeanDefinitionRegistryPostProcessor
spring中的BeanDefinitionRegistryPostProcessor是BeanFactoryPostProcessor的子接口,BeanFactoryPostProcessor的作用 ...
- ztree点击节点实现选中/取消复选框
效果 代码 在js中初始化tree时 设置复选框操作只影响子节点 复选框事件,想怎么处理就怎么处理
- 鼠标拖拉div宽度
先看效果 先进入页面 当鼠标停留在中间div时,鼠标变成双箭头 点击拖拉 往右边拉 往最左边拉 代码 <!DOCTYPE html> <html> <head> & ...
- 解决从github上下载代码仓库慢的问题
一,打开命令提示符,最好之前准备一个仓库地址,这样下载下来的文件方便查看,这里打开你想要的下载根目录,进行下载. github上下载代码仓库慢的问题"> 二:复制代码仓库的地址 三:右 ...
- nginx+uwsgi02---django部署(推荐)
参考 https://blog.csdn.net/weixin_39198406/article/details/79277580 https://www.cnblogs.com/alex3714/ ...
- Oracle的查询-分页查询
--Oracle中的分页 --rownum行号:当我们做select操作时候 --每查询出一行记录,就在该行加上一个行号 --行号从1开始,一次递增,不能跳着走 ----emp表工资倒叙排列后,每页5 ...
- IPv4-构造超网
5台PC和两个路由器 PC 设置 IP地址 子网掩码 默认网关 路由器设置 接口的IP地址 子网掩码 static(网络 掩码 下一跳) PC1 ping ...
- 10.使用du将文件按大小进行排序
按G进行排序du -sh * | grep G | sort -nr
- Django的URLconf
URL 概要 我们要在Django项目中为应用程序设计URL,我们可以创建一个名为URLconf(通常为urls.py)的Python模块.这个模块是纯Python代码,是一个简单的正则表达式到Pyt ...