初识solr 安装单节点solr5.5.3 配置中文分词 以及简单使用
来源:互联网 发布:apache 反向代理 tcp 编辑:程序博客网 时间:2024/05/09 07:33
今天安装了下solr,并且配置了中文分词,简单介绍了下solr web的使用,以及solr索引以及查询的步骤,中文分词的种类。
solr的javaAPI操作移步:http://blog.csdn.net/qq_20641565/article/details/55259690
- 1.下载文件并且解压
这里我下载的是5.5.3版本,下载地址:https://mirrors.aliyun.com/apache/lucene/solr/5.5.3/solr-5.5.3.tgz
[solr@lijie ~]$ tar -xzvf solr-5.5.3.tgz
- 2.创建数据目录和安装目录
[solr@lijie ~]$ mkdir -p ./data/solr ./solr
- 3.安装服务
注意:这必须用root用户执行
[root@lijie ~]$ ./solr-5.5.3/bin/install_solr_service.sh solr-5.5.3.tgz -d /home/solr/data/solr -i /home/solr/solr
但是这里报错:ERROR: /etc/init.d/solr already exists!如图:
因为之前我装过一次,服务已经存在了。
- 4.删除之前的solr服务(如果第一次装请忽略本步骤)
查看系统服务:
[root@lijie solr]# chkconfig --list
如图:
删除之前的服务:
[root@lijie solr]# chkconfig --del solr
切换到/etc/init.d目录,删除solr文件
[root@lijie solr]# cd /etc/init.d/[root@lijie init.d]# rm -rf solr
切换到/etc/default/删除solr.in.sh
[root@lijie solr]# cd /etc/default/[root@lijie default]# rm -rf solr.in.sh
再用root执行安装服务
[solr@lijie ~]$ ./solr-5.5.3/bin/install_solr_service.sh solr-5.5.3.tgz -d /home/solr/data/solr -i /home/solr/solr
安装成功,如图:
- 5.查看状态
[root@lijie java]# service solr status
如图:
- 6.查看web服务
访问:http://lijie:8983/solr/#/
如图:
- 7.切换回solr用户,创建core:
[root@lijie solr]# su solr[solr@lijie solr]$ ./bin/solr create -c lijie_test
如图:
注意:
如果这里用root用户创建core会报错,错误如下:
查看web端:
在网上查询资料说用root用户就会报错,所以创建core就切换回solr用户。
如果已经用root创建,切报错了,就可以先删除这个core,然后切换回solr用户,再重新创建core
删除core:
[root@lijie solr]# ./bin/solr delete -c lijie_test
切换回solr用户并且重新创建:
[root@lijie solr]# su solr[solr@lijie solr]$ ./bin/solr create -c lijie_testCopying configuration to new core instance directory:/data/solr/data/lijie_testCreating new core 'lijie_test' using command:http://localhost:8983/solr/admin/cores?action=CREATE&name=lijie_test&instanceDir=lijie_test{ "responseHeader":{ "status":0, "QTime":1391}, "core":"lijie_test"}
- 8.配置中文分词:
8.1 添加依赖:
[root@lijie lib]# cp /home/solr/solr/solr-5.5.3/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-5.5.3.jar /home/solr/solr/solr/server/solr-webapp/webapp/WEB-INF/lib
8.2 切换回solr用户,修改文件managed-schema配置文件,在目录/home/solr/data/solr/data/lijie_test/conf下,添加如下配置(摘抄于http://blog.csdn.net/jiangnan_sky/article/details/53089037):
<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <!-- 此处需要配置主要的分词类 --> <tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/> <!-- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.LowerCaseFilterFactory"/> --> <!-- in this example, we will only use synonyms at query time <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> --> <filter class="solr.SmartChineseWordTokenFilterFactory"/> </analyzer> <analyzer type="query"> <!-- 此处配置同上 --> <tokenizer class="solr.SmartChineseSentenceTokenizerFactory"/> <!-- <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.LowerCaseFilterFactory"/> --> <filter class="solr.SmartChineseWordTokenFilterFactory"/> </analyzer> </fieldType> <field name="_text_ik" type="text_ik" indexed="true" stored="true" multiValued="true"/>
8.3 重启solr
[root@lijie conf]# service solr restart
8.4 测试分词
如图:
- 9.添加document文档
- 10.查询solr获得结果
其中上面:
一. Request-Handler (qt) 表示请求的webservice的服务;
二. q表示查询条件:
- 可以指定比如 id:10001 。
- 使用匹配模式比如: id:1000? 或者 id:1000* ,其中?表示匹配任意一个字符,*表示匹配任意多个字符。
- 可以使用 and或者or多条件查询,比如id:1000* or id:10086。
- 可以范围查询比如查询id:[10000 TO 10086]或者id:{10000 TO 10086},这里需要注意TO必须要大些,并且[]这个是闭区间,{}这个是开区间。
三. fq表示filter query 过滤器查询,和q效果一样,只不过fq查询的信息会被缓存下来,如果后面有相同查询就会命中solr的缓存,每个过滤器都会被单独缓存,并且每个过滤器之间相当于都是使用的and操作符;
四. sort和mysql类似,可以根据某个字段排序,比如id asc或者id desc
五. start,rows类似于mysql的limit,从第几行开始,取多少条记录。
六. fl表示filter list表示你需要查询的字段,类似于mysql中select的字段,默认是查询所有的字段,这里可以指定查询的字段,比如:id,title 就只会查询出id和title
七. df表示default search field 默认查询字段,这里默认就是managed-schema文件里面copyfield的text字段,如果copyfield配置了字段拷贝,不指定key只指定value也能查询出来,否则查询不出来,例如:原本查询时用 id:10001,如果id设置copyfield,那么直接查询10001也能查询出来。
八. Raw Query Parameters表示facet.query的多查询,facet有点类似于mysql中的group by语句,这里比如查询age在23到25和26到32两个范围的数据条数,就可以使用”facet.query=age:[23 TO 25]&facet.query=age:[26 TO 32]”查询,如下图:
九. 复选框中的facet,就是类似于mysql中的group by语句,点开会显示三个可填写项目:
第一个填写项,可以填写查询的查询字段和值例如:“addr:重庆”,就会查询出addr为重庆的条数,如下
第二个填写项,可以填写查询的字段例如:“addr”,就会查询出addr相同的个数,如下
第三个填写项目,可以填写查询的前缀,用于查询前缀匹配的数据条数,使用这个填写项目需要先在facet.field填写字段名字,然后在facet.prefix填写查询前缀:例如 facet.field填写“name”,facet.prefix填写 “wang”,这样就会查询name以wang开头的一共有多少条数据
注意:用于facet的字段的索引index一定要设为true
- 11.solr建立索引的过程和查询过程简介
solr索引过程:
第一步:solr会对句子进行空格分隔,比如对THIS is a test encoded is iso-8859-1分词,分为THIS,is,a,test,encoded,is,iso-8859-1这些词语。
第二步:solr会对上面分出来的词,去掉停用词,这里比如a,is,并且对上面的单个词进行分词,分为THIS,test,encoded,iso,8859-1(或者不分,这里只是举个例子)。
第三部:solr会对上面分出来的英文都转化为小写this,test,encoded,iso,8859-1。
solr读取过程:
第一步:solr会对句子进行空格分隔,比如对this test encoded ISO-8859-1分词,分为this,test,encoded,iso-8859-1这些词语。
第二步:同索引过程。
第三部:同索引过程,最后分词为this,test,encoded,iso,8859-1。
虽然查询时用this test encoded ISO-8859-1这句话,而索引的时候是这句话THIS is a test encoded is iso-8859-1,但是最后分词匹配成功,那么索引的那句话就会被查询出来,这里需要注意:索引和查询的分词器必须使用一样的!!!
- 12.中文分词器
中文分词器有单个分词法,二分法,和词库法三种方式。
如果都对“今天天气真好”这个进行分词
单个分词法:今,天,天,气,真,好
二分词法:今天,天天,天气,气真,真好
词库法(还要看词库的配置):今天,天气,真好
- 初识solr 安装单节点solr5.5.3 配置中文分词 以及简单使用
- solr 的安装与使用、中文分词器的配置
- centOS6.5+jdk1.7+solr5.5.3+中文分词的安装配置
- solr安装和配置中文分词器
- solr 7.0 tomcat 安装配置 + 中文分词
- solr配置中文分词
- solr-中文分词配置
- solr 配置中文分词
- Solr5.0配置中文分词包
- Solr5.0配置中文分词包
- Solr 使用中文分词
- Solr配置,schema.xml的配置,以及中文分词
- Solr配置,schema.xml的配置,以及中文分词
- solr 5.3.2 安装及中文分词
- (三)solr的dataimport的配置以及中文分词
- Solr5.4中文分词
- Solr中文分词配置(IKAnalyzer)
- solr配置中文分词器
- JBMP工作流引擎之状态任务
- LoadRunner面试(笔试)问题整理
- Android Studio中svn的使用(全部在这里)
- 解决CSV文件打开乱码的问题
- 支付功能小结
- 初识solr 安装单节点solr5.5.3 配置中文分词 以及简单使用
- untiy 物体移动旋转集锦
- Eclipse转Android Studio的一点建议
- C++插件架构浅谈与初步实现
- java中函数是值传递还是引用传递?
- java常量池
- Java中CyclicBarrier使用学习
- Laravel 5.3 用户验证源码探究 (一) 路由与注册
- css 样式