Solr基础教程之solrconfig.xml(三)
前面介绍过schema.xml的一些配置信息,本章介绍solrconfig.xml的配置,以及如何安装smartcn分词器和IK分词器,并介绍基本的查询语法。 1、 solr配置solrconfig.xml solrconfig.xml这个配置文件可以在你下载solr包的安装解压目录的D:solr-4.10.4examplesolrcollection1conf中找到,这个配置文件内容有点多,主要内容有:使用的lib配置,包含依赖的jar和Solr的一些插件;组件信息配置;索引配置和查询配置,下面详细说一下索引配置和查询配置. 2、索引indexConfig Solr 性能因素,来了解与各种更改相关的性能权衡。 表 1 概括了可控制 Solr 索引处理的各种因素:
3、 查询配置query
4、Solr加入中文分词器 中文分词在solr里面是没有默认开启的,需要我们自己配置一个中文分词器。目前可用的分词器有smartcn,IK,Jeasy,庖丁。其实主要是两种,一种是基于中科院ICTCLAS的隐式马尔科夫HMM算法的中文分词器,如smartcn,ictclas4j,优点是分词准确度高,缺点是不能使用用户自定义词库;另一种是基于最大匹配的分词器,如IK ,Jeasy,庖丁,优点是可以自定义词库,增加新词,缺点是分出来的垃圾词较多。各有优缺点看应用场合自己衡量选择吧。 下面给出两种分词器的安装方法,任选其一即可,推荐第一种,因为smartcn就在solr发行包的contrib/analysis-extras/lucene-libs/下,就是lucene-analyzers-smartcn-4.2.0.jar,首选在solrconfig.xml中加一句引用analysis-extras的配置,这样我们自己加入的分词器才会引到的solr中. <lib dir="../../../solr-4.10.4/contrib/analysis-extras/lib" regex=".*.jar" />
<!-- 这里我写的是这个jar包对应当前文件solrconfig.xml的相对路径 -->
如果不想写上面这种引入,也可以将该jar包放入solr的WEB-INFlib下面也能达到同样的效果。 4、 smartcn 分词器的安装 首选将发行包的contrib/analysis-extras/lucene-libs/ lucene-analyzers-smartcn-4.2.0.jar复制到solr的WEB-INFlib下面,打开/solr/mycore/conf/scheme.xml,编辑text字段类型如下,添加以下代码到scheme.xml中的相应位置,就是找到fieldType定义的那一段,在下面多添加这一段就好啦 <fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="0">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>
</analyzer>
</fieldType>
如果需要检索某个字段,还需要在scheme.xml下面的field中,添加指定的字段,用text_ smartcn作为type的名字,来完成中文分词。如 text要实现中文检索的话,就要做如下的配置: <field name ="text" type ="text_smartcn" indexed ="true" stored ="false" multiValued ="true"/>
5、 IK 分词器的安装 首选要去下载IKAnalyzer的发行包.下载地址: http://ik-analyzer.googlecode.com/files/IK%20Analyzer%202012FF_hf1.zip. 下载后解压出来文件中IKAnalyzer.cfg.xml、Stopword.dic放到solr的/WEB-INF/classes目录下(没有就创建classes文件夹),将IKAnalyzer2012FF_u1.jar放到solr的/WEB-INF/lib下面. IKAnalyzer2012FF_u1.jar 分词器jar包 IKAnalyzer.cfg.xml 分词器配置文件 Stopword.dic 分词器停词字典,可自定义添加内容 完成后就可以像smartcn一样的进行配置scheme.xml了. <fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<field name ="text" type ="text_ik" indexed ="true" stored ="false" multiValued ="true"/>
现在来验证下是否添加成功,首先使用StartSolrJetty来启动solr服务,启动过程中如果配置出错,一般有两个原因:一是配置的分词器jar找不到,也就是你没有复制jar包到solrcontribanalysis-extraslib目前下;二是分词器版本不对导致的分词器接口API不一样出的错,要是这个错的话就在检查分词器的相关文档,看一下支持的版本是否一样. 如果在启动过程中没有报错的话说明配置成功了.我们可以进入到http://localhost:8983/solr地址进行测试一下刚加入的中文分词器.在首页的Core Selector中选择你配置的Croe后点击下面的Analysis,在Analyse Fieldname / FieldType里选择你刚才设置的字段名称或是分词器类型,在Field Value(index)中输入:中国人,点击右面的分词就行了. 6、查询参数 不常用 [Solr的检索运算符] “:” 指定字段查指定值,如返回所有值*:* “?”表示单个任意字符的通配 “*” 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号) “~”表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。 邻近检索,如检索相隔10个单词的”apache”和”jakarta”,”jakarta apache”~10 “^”控制相关度检索,如检索jakarta apache,同时希望去让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4 apache 布尔操作符AND、|| 布尔操作符OR、&& 布尔操作符NOT、!、-(排除操作符不能单独与项使用构成查询) “+” 存在操作符,要求符号”+”后的项必须在文档相应的域中存在 ( ) 用于构成子查询 [] 包含范围检索,如检索某时间段记录,包含头尾,date:[200707 TO 200710] {}不包含范围检索,如检索某时间段记录,不包含头尾 date:{200707 TO 200710} ” 转义操作符,特殊字符包括+ - && || ! ( ) { } [ ] ^ ” ~ * ? : “ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |