Solr是用Java编写、运行在Servlet容器(如Apache Tomcat或Jetty)的一个独立的全文搜索服务器。 Solr采用了Lucene Java搜索库为核心的全文索引和搜索,并具有类似REST的HTTP/XML和JSON的API。 Solr强大的外部配置功能使得无需进行Java编码,便可对其进行调整以适应多种类型的应用程序
2.
本教程,我们采用的版本为:solr4.10.4.000000000000000
要求JDK1.7以上
Serlvet容器:tomcat
先要把这些基础环境安装好
3.下载jdk
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
4.安装jdkvi /etc/profile
保存之后,为了让配置生效
source /etc/profile
然后使用Java -version验证即可
5.安装tomcatLinux
解压即可
http://192.168.10.164:8080/ 访问即可
6.下载solrhttp://archive.apache.org/dist/lucene/solr/
7.Solr目录介绍首先,上传solr压缩包,然后解压
目录的关键说明:
bin:solr的运行脚本
dist:包含一个可以连通tomcat和solrhome的可运行war包
docs:solr的API文档
example:solr工程的例子目录
Ø example/solr:
该目录是一个标准的SolrHome,它包含一个默认的SolrCore
8.创建solrHome首先,解压solr安装包,解压包下solr-4.10.4\example\solr文件夹就是一个标准的SolrHome。然后将其拷贝自己的某个文件夹下,改名为solrhome
SolrHome是Solr运行的主目录,该目录中可以包括了多个SolrCore目录。SolrCore目录中包含了运行Solr实例所有的配置文件和数据文件,SolrCore就表示一个solr实例。
一个SolrHome可以包括多个SolrCore(Solr实例),每个SolrCore提供单独的搜索服务。关系图如下:
solrHome
----solrCore(solr实例,单独提供搜索服务)collection1
--------配置文件 conf
--------数据文件 启动服务的时候,自动生成
9.Tomcat部署solr.war,连线solrhome操作步骤:
1、 从solr解压包下的solr-4.10.4\dist目录中拷贝solr.war,复制到tomcat安装目录的webapps文件夹下
2、 启动tomcat解压war文件,然后关闭tomcat,再删除solr.war,然后重命名解压后的工程
3、 在解压工程的WEB-INF里面创建classes目录
添加扩展的日志包
1、 将solr解压包下的solr-4.10.4\example\lib\ext目录下的所有jar包,复制到解压缩后的solr工程的WEB-INF\lib目录
2、 把solr解压包下solr-4.10.4\example\resources\log4j.properties文件进行复制到解压缩后的solr工程中的WEB-INF\classes目录
到此,solr工程环境准备就绪
在solr应用的web.xml文件中,加载SolrHome
10.安装中文分词器配置中文分词器IKAnalyzer
第一:将jar包及两个配置文件上传即可
第二:把IKAnalyzer依赖的jar包添加到solr工程中。
第三:把分析器使用的配置文件添加到classpath中。
需要自定义一个FieldType。1Schema.xml中定义。可以在FieldType中指定中文分析器。
<!-- IKAnalyzer-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
重启tomcat,检验分词器的作用
11.建立索引库第一步-自定义域
依然是Schema.xml配置文件,自定义域。指定域的类型为自定义的FieldType。
修改
<!--配置商品信息的Field-->
<!--商品名称-->
<field name="product_name" type="text_ik" indexed="true" stored="true"/>
<!--商品价格-->
<field name="product_price" type="int" indexed="true" stored="true"/>
<!--商品卖点-->
<field name="sale_point" type="text_ik" indexed="true" stored="true"/>
<!--商品图片-->
<field name="images" type="string" indexed="false" stored="true"/>
<!--目标域-->
<field name="product_keywords" type="text_ik" indexed="true" stored="true" multiValued="true"/>
<!--将商品名称添加到目标域-->
<copyField source="product_name" dest="product_keywords"/>
<!--将商品卖点添加到目标域-->
<copyField source="sale_point" dest="product_keywords"/>
Product_name:
Sale_point:
Product_keywords:
重启tomcat完成配置。
到此,配置已经完成,下面就是需要导入数据
12.创建搜索系统提供同步数据接口
我们将创建新工程,并利用solrj为我们提供的API进行操作
搭建solr工程,并创建包以及引入相关的配置文件 搜索系统 controller service
依赖common,mapper,spring,jstl,solrj
工程的创建以及相关配置文件可以参考background-controller
将以下坐标配置到parent中,搜索工程引用即可
<!-- solrj -->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>${solrj.version}</version>
</dependency>
<solrj.version>4.10.4</solrj.version>