其实简单的说,Solr是一个基于Apache Lucene 项目的开源企业级搜索平台,是用JAVA编写的、运行在Servlet容器中的一个独立的全文搜索服务器(换句话说就是个JAVA-WEB APP),并具有类似REST的HTTP/XML和JSON的API。
主要功能包括全文检索,高亮命中,分面搜索(faceted search),近实时索引,动态集群,数据库集成,富文本索引,空间搜索;通过提供分布式索引,复制,负载均衡查询,自动故障转移和恢复,集中配置等功能实现高可用,可伸缩和可容错。
Solr和Lucene的关系
Solr是Lucene的一个子项目,它在Lucene的基础上进行包装,成为一个企业级搜索服务器开发框架。
Solr与Lucene的主要区别体现在:
Solr更加贴近实际应用,是Lucene在面向企业搜索服务领域的扩展;
Solr的缓存等机制使全文检索获得性能上的提升;通过配置文件的开发使得Solr具有良好的扩展性;
Solr提供了用户友好的管理界面与查询结果界面。
1.去官网下载solr
http://www-eu.apache.org/dist/lucene/solr/6.5.1/
还需要安装java环境 这里就不说了 请先自行安装java
2.解压 进入文件夹 启动
bin/solr start
通过浏览器访问 http://localhost:8983即可看到Solr的管理界面。上面的这条命令是按照单机模式启动,还有cloud模式,顾名思义应该是solr集群了。
3.创建一个SolrCore
首先保证Solr正常启动了
在命令行中新建。转到$Solr.Install.Dir,输入一下命令:
bin/solr create -c test
在/server/solr 目录下 会有一个 test文件夹
4.从mysql导入数据
这个是我的表数据
+----+----------+---------+--------------------------------+
| id | userName | userAge | userAddress |
+----+----------+---------+--------------------------------+
| 1 | summer | 30 | shanghai |
| 2 | test1 | 22 | suzhou |
| 3 | test1 | 29 | some place |
| 4 | lu | 28 | some place |
| 5 | xiaoxun | 27 | nanjing |
| 6 | xiaoli | 50 | 北京市大兴区丽园小区 |
| 7 | zhanlu | 50 | 上海市浦东新区 |
| 8 | xiaolsdf | 50 | 黑龙江省哈尔滨市 |
+----+----------+---------+--------------------------------+
首先导入两个jar分别是solr-dataimporthandler-5.5.0.jar和mysql-connector-java-5.1.38-bin.jar,前一个可以在solr的解压目录下的dist目录中获取,后一个我想大家都可以找到的。
将这两个jar包复制到$Solr.Install.Dir/server/solr-webapp/webapp/WEB-INF/lib这个目录下。
1. 默认dataImport功能在Solr中是禁用的,需要在$SolrHome/conf/solrconfig.xml(我的目录是server/solr/test)中添加如下配置开启数据导入功能:
<!-- Data import from mysql 要放在<config></config>中哦-->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
因为前面定义了导入的配置文件是data-config.xml,所以在solrconfig.xml同级目录下新建这个文件,贴出我的配置,内容如下:
<dataConfig>
<dataSource name="fromMysql"
type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mybatis"
user="root"
password="root23place"/>
<document>
<entity name="user" query="SELECT * FROM user" transformer="RegexTransformer">
<field column="id" name="id"/>
<field column="userName" name="userName"/>
<field