solr(二)---基本使用
累觉不爱啊!昨日本文已将近完工,看到文本编辑器提示自动保存了草稿也就没做保存操作。可惜悲剧还是来了,所有的内容都没有了!今日只得从头来过了。 好吧,废话不多说,继续solr的学习。笔者上篇文章《solr(一)---介绍与安装》介绍了solr的安装。安装好之后是不是不知道怎么操作呢?另外是不是不理解solr、solr主目录以及调用程序之间的关系?本文将进行详细的介绍。一、solr关系介绍
现在大家都知道了,solr是一个搜索工具,实现了lucene。solr安装好了,admin页面也可以访问了。但是solr怎么使用呢?solr主目录是个什么东东?和solr程序有什么关系?我们怎么关联solr和使用solr呢?
现在笔者根据自己的理解,举如下例子来帮助理解(当然,如果笔者理解有误,欢迎批评指正):
现在,我们有一个web项目,名为BS(Book search)。用于公司内部的共享书籍的管理和搜索。公司员工对所有的书籍进行了编号,员工通过查询书籍名称就能书籍当前是否借出、存放位置等信息。
那为了对书籍进行搜索,我们需要一个搜索系统(SS)。该系统独立于BS,专门用于搜索。SS需要录入书籍的信息、建立索引、支持搜索。该SS就是一个solr系统。
那solr的主目录呢?因为对于一个solr系统,它可能有多个数据源,每个数据源搜索的内容不同、来源不同、结构不同...所以就有多个core。每个core就是solr的一个心脏,solr可以通过切换core去实现不同的搜索方式、要求。
可能读者还是不太理解,那后面在讲解到solr的使用的时候,笔者会结合具体的配置来进行说明。
二、solr基本结构
上一篇讲到,E:solr-tomcatsolr为笔者的主目录,内容来自于F:solrsolr-4.7.2examplesolr。于是,我们从示例中copy了一个比较完整的core。这个core的名字叫collection1,包含solr.xml和zoo.cfg文件。
solr.xml是对整个solr的所有core的配置文件;而zoo.cfg配置了一些初始化参数。
collection1目录下有一个conf目录,里面包含了该core的所有配置信息。其中最重要的两个配置文件是:schema.xml和solrconfig.xml。
solrconfig.xml是该core所配备的功能的配置。用来配置Solr的一些系统属性,例如与索引和查询处理有关的一些常见的配置选项,以及缓存、扩展等等;而schema.xml主要包括types、fields和其他的一些缺省设置。
关于schema.xml的配置,网上有很多文章介绍。在这里就不赘述了。
三、solr操作
首先!!我们需要在schema.xml中配置你即将解析的document的字段信息。例如,如果把XML作为document的话,需要对该XML中所有fieldType和field进行配置。
再对schema.xml和solrconfig.xml配置完成后(对于example中的collection1这个core,已经对exampledocs实例数据源的字段进行了配置,所以如果没有特殊要求的话,其实不需要配置),打开admin页面。在“Core Selector”的下拉框中,我们可以看到有“collection1”这个core。选择这个core。
1、“Analysis”是分词模块。其显示了所有在schema.xml配置的Field和FieldType。根据选择的Field或FieldType的不同,可以对索引(Index)和查询(Querty)实现不同的分词功能。
笔者添加了IKAnalyzer这个中文分词器。配置了“text_ik”这个FieldType以及相关联的“contents”这个Field。(后面笔者将介绍该分词器的安装)
2、“dataimport”模块用于导入数据源。其支持全量和增量两种方式。本文将暂时不介绍本部分的时候,后面讲有专门的文章介绍。
3、“documents”模块用于导入文章作为数据源。所支持的文档类型多样,主要为JSON、XML、文件还有文档自建。笔者以XMl和文件两种方式来展示该模块。
a)、文件。选择文档类型为“File Upload”,从F:solrsolr-4.7.2exampleexampledocs目录下选择vidcard.xml文件上传。
提交之后,solr就会对该xml文件进行解析、建立索引了。工作完成后,我们就有了搜索的内容。
b)、XML。把页面上选择文档类型为XML,把vidcard.xml文件的内容复制到文档框内。
提交之后,solr就会分析该xml内容、建立索引了。工作完成后,我们就有了搜索的内容。
4、“Query”模块用于对已建索引、处理完的数据源来进行查询。
例如,在上一步上传的vidcard.xml中有name这个field,它的值是“ASUS Extreme N7800GTX/2DHTV (256 MB)”:
1
ASUS Extreme N7800GTX/2DHTV (256 MB)
因为“documents”模块已对该xml进行了处理和建索引,所以我们可以直接搜索该字段的结果。
从图中可以看出,我们搜索出了"name"字段中包含“Extreme”的记录。
其实从我们修改url也能实现查询功能:
四、添加中文分词器
中文分词在solr里面是没有默认开启的,需要我们自己配置一个中文分词器。目前可用的分词器有smartcn,IK,Jeasy,庖丁。
下面给出两种分词器的安装方法,任选其一即可,推荐第一种,因为smartcn就在solr发行包的contrib/analysis-extras/lucene-libs/下,就是lucene-analyzers-smartcn-4.2.0.jar,首选在solrconfig.xml中加一句引用analysis-extras的配置,这样我们自己加入的分词器才会引到的solr中.
4.1、smartcn 分词器的安装
首选将发行包的contrib/analysis-extras/lucene-libs/ lucene-analyzers-smartcn-4.2.0.jar复制到solrcontribanalysis-extraslib下,在solr本地应用文件夹下,打开/solr/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>
1
<field name ="text" type ="text_smartcn" indexed ="true" stored ="false" multiValued ="true"/>
4.2、IK 分词器的安装
首选要去下载IKAnalyzer的发行包.下载地址: http://ik-analyzer.googlecode.co ... r%202012FF_hf1.zip.
下载后解压出来文件中的三个复制到F:solrsolr-4.7.2contribanalysis-extraslib目录中. 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"/>
页:
[1]