Solr搜索引擎服务器学习笔记
Solr简介
-
采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎
-
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http GSolret操作提出查找请求,并得到XML格式的返回结果
Solr与lucene关系
-
Lucene是一套信息检索工具包,但并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能,因此在使用Lucene时你仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西
-
首先Solr是基于Lucene做的,Solr的目标是打造一款企业级的搜索引擎系统,因此它更接近于我们认识到的搜索引擎系统,它是一个搜索引擎服务,通过各种API可以让你的应用使用搜索服务,而不需要将搜索逻辑耦合在应用中。而且Solr可以根据配置文件定义数据解析的方式,更像是一个搜索框架,它也支持主从、热换库等操作。还添加了高亮、facet等搜索引擎常见功能的支持
Solr的搭建与运行
-
cmd打开命令行窗口,进入E:/solr/example目录
-
执行命令:java -jar start.jar
-
通过第三步以后,系统会启动solr自带的jetty服务器,通过http://localhost:8983/solr/便可访问solr
-
此时,solr已成功启动
界面如上所示。
Solr技术路线图
Solr图形化管理界面
菜单
Core Admin
搜索功能
当点击搜索区域
会出现如下的列表
增加document
点击上图的Documents,可以看到
编写一个json格式的对象:
显示:
成功生成了一个document对象
搜索
打开界面:
执行
Xml与solr
Xml文件的导入
当执行如下的操作的时候
可以把hd.xml文件中的内容创建Document对象,引入到solr中。
Xml文件的查询
hd.xml文件的部分内容
查询到的内容:
浏览器的查询
Solrj
Schema
是solr中很重要的一个配置文件
路径
元素
Field
说明
-
为字段
-
Name为字段的名称
-
Type为字段的类型
-
Indexed是否为该字段建立索引
-
Stored是否存储该字段
-
Required是否是必须的
dynamicField
<dynamicField name="*_s" type="string" indexed="true" stored="true"/>
说明:
-
为动态属性
-
Name=”*_i”*可以代表任何字母
doc.addField("namessss_s", "赵栋");这个是可以匹配的
uniqueKey
<uniqueKey>id</uniqueKey>
说明
表示唯一的一个document的标示是id
Solr与数据库
Select
在collection1/config/solrconfig.xml文件中,有一个配置
所有的查询是由SearchHandler处理的。
Update
Dataimport
当打开solr的管理界面时
点击上图的Dataimport,这个时候,浏览器的地址是
会请求一个dataimport的域,但是提示结果为:
说明没有dataimport-handler定义。
解决方案:
1、修改solrconfig.xml文件,添加如下的代码:
2、在
目录下,copy如下的jar包和数据库驱动的jar包,加入到solr工程中
工程的结构为:
3、创建data-config.xml文件,放入到config目录下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?xml version="1.0" encoding="UTF-8" ?> <dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/itheima09_solr" user="root" password="root"/> <document> <entity name="id" query="select id,name,manu from solr"></entity> </document> </dataConfig>
4、重新启动solr服务器
5、打开浏览器界面,点击dataimport
执行完成以后,数据库的表的数据就被导入到了索引库中。