1、Solr它是一种开放源码的、基于 Lucene Java(lucene是一个做搜索用的类库,是一套信息检索工具包。 nutch和solr都是基于lucene的) 的搜索服务器,易于加入到 Web 应用程序中。
2、Solr 提供了层面搜索、命中醒目显示并且支持多种输入输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。Solr已经在众多大型的网站中使用,较为成熟和稳定。
3、Solr 包装并扩展了 Lucene,所以Solr的基本上沿用了Lucene的相关术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。
4、通过对Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。
5、此外,很多 Lucene 工具(如Nutch)也可以使用Solr 创建的索引。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。
总结:我们可以看出 solr 和 Lucene 并不是一个竞争的关系,solr是基于Lucene 做的一个搜索引擎服务器。我们可以把Lucene 看成是一个底层的搜索api,甚至可以说看成是SDK。而Solr是一个有HTTP接口的基于Lucene的查询服务器,封装了很多Lucene细节并且提供了层面搜索、命中醒目显示并且支持多种输入输出格式(包括XML/XSLT 和JSON等格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。
自从2013年开始,solr一改风格,成为了又一个版本帝,一月一个甚至一月俩个版本,用户如何选择就成了一个难题。
如此多的版本并不好选择,并且还有非常多的问题(偶数版本都有问题,不能使用),所以总结记录下:
4.0 开始引入solrcloud的概念
4.1 启用了lucene4.1默认的编码器存储领域压缩在默认情况下,压缩比第一次出现了负增长
4.2 有bug,不能线上使用
4.3.1 可以线上使用
4.4 有bug,不能线上使用
4.5.1 可以线上使用 (例:YY使用的solr4.5.1)
4.6 有bug,不能线上使用
4.7.1 可以线上使用 (例:56视频使用的solr4.7.1)不过因为4.8改变了旧的配置方式,如果出现问题将没有版本的继续优化,所以4.7.1成了一个纪念版本
4.8 有bug,不能线上使用
4.9 有bug,不能线上使用
总结:
solr4.3.1,solr4.5.1,solr4.7.1都可以线上使用,如果数据量要求不高,solr3.6也可以使用
从5.0开始,solr不再以war包发布(war包可以部署到任何servlet容器中),而是以独立的java服务器程序的形式发布(基于内嵌的jetty),它有启动/停止脚本,后续版本不支持部署到其他的servlet容器上(如tomcat)。
参考:http://blog.csdn.net/ningzuobei/article/details/53010156
准备工作:
下载tomcat 8: http://tomcat.apache.org/download-80.cgi
下载Solr4.7.1:http://archive.apache.org/dist/lucene/solr/
分析器:
下载IKAnalyzer:http://download.csdn.net/download/z3225167/10223827
下载pinyinAnalyzer4.3.1:http://download.csdn.net/download/mackywuqiong/8425141
下载pinyinAnalyzer:http://download.csdn.net/download/z3225167/10223901
下载pinyin4j-2.5.0.jar:
数据导入:
下载mysql对应版本驱动包:http://download.csdn.net/download/small_lee/9947703
tomcat配置
1、修改tomcat的conf目录下的server.xml,在
redirectPort="8443" />
配置里任意位置增加URIEncoding="UTF-8"
2、修改tomcat端口,避免和其他应用服务的端口发生冲突。
3、设置tomcat启动jvm内存。
4、将 solr-4.7.1\example\lib\ext下的所有jar文件复制到tomcat\lib下。
注:不然会报404页面找不到
1、将下载的 solr-4.7.1.zip 解压 ,将solr-4.7.1\dist\solr-4.7.1.war文件复制到tomcat的webapps目录下,并将文件命名为solr.war。
注:war是一个完整的web应用程序,包括了solr的jar文件和所有运行Solr所依赖的Jar文件,Jsp和很多的配置文件与资源文件。
2.配置solr/home的地址,找到solr\WEB-INF\web.xml编辑
solr/home:solr配置文件所在目录,一般放到与webapps同级的目录。
注:该路径不能存在中文.
3、solr home设置:
复制solr解压目录下的solr-4.7.1\example\solr目录到solrHome。
4、设置G:\lanwon\doc\solrtrain\apache-tomcat-8.5.27\webapps\solrHome\collection1\conf\solrconfig.xml
找到下面这项配置,这个是指定你的索引文件存在什么地方的
5、设置好之后找到tomcat的bin目录下的startup.bat双击启动。
5-1、输入http://localhost:8080/solr
现在我们来看看目前支持的分词是否满足,我们想要的业务。
5-2、如果我们想支持中文全拼、分词、英文全拼、英文分词、该怎么做。
1、我们需要使用到的jar包、配置如下:
把ik-analyzer.jar、pinyin4j-2.5.0.jar、pinyinAnalyzer.jar、pinyinAnalyzer4.3.1.jar放到solr\WEB-INF\lib下。
2.找到solrHome\collection1\conf\的schema.xml,添加分析器
3.安装完成分析器后,进入http://localhost:8080/solr/查看效果。
4.选择当前的core,进入analysis页面测试分词效果。
1、我们需要使用到的jar包、配置如下:
把mysql-connector-java-5.1.43-bin.jar、以及solr-4.7.1\dist\solr-dataimporthandler-4.7.1.jar、solr-dataimporthandler-extras-4.7.1.jar放到solr\WEB-INF\lib下。
2、修改solrHome\collection1\conf\solrconfig.xml添加如下:
data-config.xml
3、当前目录新建data-config.xml文件,该文件做为连接数据库及sql。
4、编辑data-config.xml文件
>
4、
5、找到solrHome\collection1\conf设置对应字段 对应的 分析器
如果说字段存在的情况下:
Solr主要配置文件介绍
solrconfig.xml:该文件是solr的主配置文件,配置高亮,数据源,索引大小,索引合并等所有的索引策略配置;
schema.xml:该文件是配置查询字段信息,定义了所有的数据类型和各索引字段的信息(如类型,是否建立索引,是否存储原始信息);
data-config.xml:数据库配置信息文件,配置了数据源信息,全量索引,增量索引的数据库查询……
Solr的客户端基本上只有一个,那就是solrj。
SolrJ是操作Solr的JAVA客户端,它提供了增加、修改、删除、查询Solr索引的JAVA接口。SolrJ针对 Solr提供了Rest 的HTTP接口进行了封装, SolrJ底层是通过使用httpClient中的方法来完成Solr的操作。
spring-data-solr是在solrj的基础上做的封装,使统一成spring-data的风格
1、pom.xml增加配置
org.springframework.boot
spring-boot-starter-data-solr
2、application.properties增加@Autowired
private SolrClient server;
示例一
@RequestMapping("/solrTest")
public Object testSolr(String param) throws IOException, SolrServerException {
List
关键字加亮
//设置高亮
query.setHighlight(true); // 开启高亮组件或用query.setParam("hl", "true");
query.addHighlightField("name");// 高亮字段 多个则多号隔开Song_Name,Song_SingerName
query.set("hl.highlightMultiTerm","true");//启用多字段高亮
query.setHighlightSimplePre(""); //标记,高亮关键字前缀
query.setHighlightSimplePost("");//后缀
通过Map
1、编写DockerFile。
#基本镜像
FROM centos
#把你上传的jdk放到docker容器里面的root目录下
ADD jdk-8u121-linux-x64.tar.gz /root
#把你上传的Tomcat放到docker容器里面的root目录下
ADD apache-tomcat-8.0.32.tar.gz /root
#设置环境变量
ENV JAVA_HOME /root/jdk1.8.0_121
#设置环境变量
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#设置环境变量
ENV CATALINA_HOME /root/apache-tomcat-8.0.32
#设置环境变量
ENV CATALINA_BASE /root/apache-tomcat-8.0.32
#设置环境变量
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#执行startup.sh 并打开日志
ENTRYPOINT /root/apache-tomcat-8.0.32/bin/startup.sh && tail -F /root/apache-tomcat-8.0.32/logs/catalina.out
执行命令:
docker build -t docker-tomcat-solr .
docker run -d -p 28080:28080 docker-tomcat-solr
docker ps -a
由于以上内容是当初在公司做内部培训的,很多地方都是现场操作,现场交的,这里只是把PPT中的内容copy过来了,很多地方不是很详细勿怪!!!