Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
下面来配置Solr全文索引:
首先到网上搜索并下载solr,给大家准备了网站http://mirrors.hust.edu.cn/apache/lucene/solr/,就不用那么麻烦的找,下载完解压后里面的目录结构是这样的:
然后按开始键输入cmd进入DOS窗口
在DOS窗口里启动Solr服务:首先进入到你解压的Solr文件里的bin目录(cd的意思是进入)
然后接着输入启动命令:
solr.cmd start
然后启动成功显示如下图,中间等待一会就好了
打开浏览器(推荐谷歌浏览器)在地址栏输入http://localhost:8983/(localhost指本机主机名,8983指Solr端口号,默认是8983),启动服务成功显示的页面
点击左侧导航的Core Admin 点击Add Core ,下图画线name和instanceDir自己设置相关的名称,然后点击添加
是不是报一行红色的错误呢?不要慌张,找到你解压好的Solr文件—>server—>solr就可以看到你新添加的core了
双击打开后会发现里面是空的,这就是报错的原因,缺少conf文件,这时候进入configsets—>_default文件下把conf复制到你新添加的core里面,注意看路径
然后回到浏览器再点一次Add Core,刷新一下就可以了(有些可能还会跳一个错误出来,不用理它,直接F5刷新),这就是新添加的core
回到新添加的core目录里,会发现多了两个文件,这才是正确添加core
接下来就要修改配置文件了,要修改的配置文件都在conf里面
我们需要添加中文分词器,因为Solr作为搜索应用服务器,在使用过程中,不可避免的要使用中文搜索。把中文分词jar包加入solrconfig.xml文件中,放在其他的<lib/>标签后面
<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs" regex="lucene-analyzers-smartcn-\d.*\.jar" />
然后到managed-schema文件中设置增加fieldType类型代码,一样放在其他的<fieldType>类型后面
<fieldType name="text_ik_zd" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/> </analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/> </analyzer>
</fieldType>
接下来配置导入数据的jar包,可以将数据库的数据导入Solr搜索引擎,把导入数据jar包加入solrconfig.xml中,放在其他的<lib/>标签后面
<lib dir="${solr.install.dir:../../../..}/dist" regex="solr-dataimporthandler-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist" regex="solr-dataimporthandler-extras-\d.*\.jar" />
然后将连接数据库的jar包放到server\solr-webapp\webapp\WEB-INF\lib目录下,我用的是mysql数据库
然后继续在solrconfig.xml中加入requestHandler类型,放在其他的<requestHandler>标签后面
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<!--datasorce config-->
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
接下来在conf里创建data-config.xml文件,文件名和上文的requestHandler标签配置的str的值对应,有关联
然后在data-config.xml文件里写入下列代码,<dataSource/>标签里是数据库连接配置,大家按照自己的配就好了,<document>标签里<entity>标签包含的是要查询的数据库表的数据,既然要从数据库导入数据,就需要创建数据库表,查询数据库表,两边配置务必相同
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test" user="root" password="root" name="productSource"/>
<document>
<entity name="product" query="SELECT pid,name,price,description FROM product " pk="pid" dataSource="productSource">
<field column="pid" name="product_id"/>
<field column="name" name="product_name"/>
<field column="price" name="product_price"/>
<field column="description" name="product_desc"/>
</entity>
</document>
</dataConfig>
所有的文件配置完成后,回到DOS窗口,想要生效必须重启服务:(先输入第一条语句,-p代表停止的端口号,然后等提示完再启动)
solr.cmd stop -p 8983
solr.cmd start
重启成功后,浏览器刷新或者重新打开http://localhost:8983/,我们来测试一下结果,点击左侧的下拉框,选择创建好的core名字
选择Analysis,测试中文分词器
如果用的是Solr默认的分词器,搜索的结果就不友好了,会把名词拆开查询,效率低
如果用刚刚设置的中文分词器(设置的名称叫text_ik_zd),显示的结果就很理想了,提高搜索效率
接下来测试查询导入的数据库数据,点击Schema,然后点击Add Field,name(数据库表字段名)填的值对应data-config.xml文件里<field/>name的值,fieId type选name的数据类型(整数就pint,浮点数用pfloat······),数据库表里有多少字段就添加多少个
添加完成后查看添加的字段
接下来导入数据,选择Dataimport,按下图操作,两个勾打上,选择Entity哪个表,最下面的Auto-Refresh Status勾上,然后点击Execute执行
执行成功后显示,导入了3条数据
然后点击Query查看数据,直接点击Execute Query,右侧显示数据,可以添加查询条件进行查询
以上就是Solr的配置使用,谢谢大家