solr入门教程

一、搜索技术

1.1、什么是搜索

简单的说,搜索就是搜寻、查找,在IT行业中就是指用户输入关键字,通过相应的算法,查询并返回用户所需要的信息。

1.2、普通的数据库搜索

类似:select * from 表名 where 字段名 like ‘%关键字%’

例如:select * from article where content like ’%here%’

结果: where here shere

1.3、百度的搜索

solr入门教程_第1张图片

从结果可以看出,百度搜索具备以下明显特点:

1、即使在相关结果数量接近500万时,也能快速得出结果。

2、搜索的结果不仅仅局限于完整的“吃饭睡觉篮球”这一短语,而是将此短语拆分成,“篮球”,“吃饭”,“睡觉”,等关键字。

3、对拆分后的搜索关键字进行标红显示。

4、.......

1.4、普通的数据库搜索的缺陷

类似:select * from 表名 where 字段名 like ‘%关键字%’

例如:select * from article where content like ’%here%’

结果: where here shere

1、因为没有通过高效的索引方式,所以查询的速度在大量数据的情况下是很慢。

2、搜索效果比较差,只能对用户输入的完整关键字首尾位进行模糊匹配。用户搜索的结果误多输入一个字符,可能就导致查询出的结果远离用户的预期。

二、搜索技术

2.1、企业搜索技术选型

在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。

2.2、单独使用Lucene实现

单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建议采用

2.3、使用Google或Baidu接口

通过第三方搜索引擎提供的接口实现站内搜索,这样和第三方引擎系统依赖紧密,不方便扩展,不建议采用

2.4、使用Solr实现

基于Solr实现站内搜索扩展性较好并且可以减少程序员的工作量,因为Solr提供了较为完备的搜索引擎解决方案,因此在门户、论坛等系统中常用此方案。

三、Solr

3.1、什么是solr

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化,Solr可以独立运行在 Jetty、Tomcat 等 Servlet 容器中,Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引 。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回 Xml、json 等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene。

Solr 是一个独立的企业级搜索应用服务器,它对外提供类似于 Web-service的API 接口。用户可以通过 http 请求,向搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。调用接口,实现增加,修改,删除,查询索引库。

3.2、solr特性

  • 高级的全文搜索功能
  • 专为高通量的网络流量进行的优化
  • 基于开放接口(xml和http)的标准
  • 综合的html管理界面
  • 可伸缩性-能够有效地复制到另外一个Solr搜索服务器
  • 使用xml配置达到灵活性和适配性
  • 可扩展的插件体系

3.3、Solr与Lucene的区别

Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,Lucene提供了完整的查询引擎和索引引擎,目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者以Lucene为基础构建全文检索引擎。

Solr的目标是打造一款企业级的搜索引擎系统,它是一个搜索引擎服务,可以独立运行,通过Solr可以非常快速的构建企业的搜索引擎,通过Solr也可以高效的完成站内搜索功能。

Solr与Lucene 并不是竞争对立关系,恰恰相反Solr 依存于Lucene,因为Solr底层的核心技术是使用Lucene 来实现的,Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括 Solr: Solr是Lucene面向企业搜索应用的扩展。

四、Solr安装

4.1、环境准备

我们在Linux下安装solr,需要有JDK和Tomcat环境,可以自行百度如何安装。

4.2、安装solr

4.2.1、上传安装包并解压

将solr的安装包上传到linux的/usr/local目录下,并解压

[root@my121 local]# tar -zxvf solr-5.5.5.tgz

4.2.2、部署

这里是将solr部署到Tomcat上

1)把solr-5.5.5下面的server下面的solr-webapp下面的webapp复制到tomcat的webapps下,改名为solr(随便起名)  

mv webapp solr

cp -r webapp/ /root/usr/java/apache-tomcat-8.5.31/webapps/

2)把solr-5.5.5下面的server下面的lib下面的ext下面的所有jar 全部复制到 Tomcat\ webapps\solr\WEB-INF\lib 目录中

            cp * /root/usr/java/apache-tomcat-8.5.31/webapps/solr/WEB-INF/lib/
solr入门教程_第2张图片

3)将 solr 压缩包中 solr-5.5.5/server/resources /log4j.properties 复制到Tomcat\ webapps\solr\WEB-INF\lib 目录中

                 cp log4j.properties /root/usr/java/apache-tomcat-8.5.31/webapps/solr/WEB-INF/lib/

4)关联solr及solrhome。需要修改solr工程的web.xml文件

我这里放到了/var/solr/home/solr/目录下

5)修改tomcat的web.xml

编辑这个文件

[root@my121 home]# vi /usr/local/tomcat8/webapps/solr/WEB-INF/web.xml

解开注释  把solrhome路径放进去

solr入门教程_第3张图片
4.2.3、启动访问

启动tomcat,在没浏览器输入网址http://my121:8080/solr/admin.html即可访问

solr入门教程_第4张图片

五、添加core

solr入门教程_第5张图片

在管理界面添加core时失败了,这时候需要去/var/solr/home/solr/下面创建一个文件夹。我的文件夹叫做new_core

solr入门教程_第6张图片

然后把解压后的solr文件夹中的/usr/local/solr-5.5.5/server/solr/configsets/sample_techproducts_configs/conf/复制到new_core中

重启Tomcat之后,重新创建

solr入门教程_第7张图片

六、配置中文分词器

Solr支持的分词器有很多比如:smartcn,IK等,我们这里使用IK分词器。

6.1、下载IK分词器

http://pan.baidu.com/s/1o7P0846

6.2、配置

1)把jar包复制到tomcat/webapp/solr/WEB-INF/lib里面。(千万不要复制到tomcat/lib中,这样会找不到lucene的类)

2)打开solrHome/core1/conf/managed-schema文件,在最下方,追加如下配置


        
        
 

6.3、测试

重新启动tomcat,查看分词

solr入门教程_第8张图片

注意:IK分词器只支持UTF-8格式,所以不要使用Windows下的记事本编写数据

你可能感兴趣的:(Java技术)