Solr配置及使用

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-serviceAPI接口。用户可以通过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的配置使用,谢谢大家

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2Hhhhhh

一分也是爱 多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值