全文搜索技术—Solr

摘要:
1.学习计划1。Solr安装和配置a)Solr集成tomcatb)Solr后台管理功能介绍c)中文分析仪配置2。使用Solr后台管理索引库a)添加文档b)删除文档c)修改文档d)查询文档3。使用SolrJ管理索引库a)添加文档b)修改文档c)删除文档d)查询文档4。电子商务搜索案例实现a)案例分析b)实际案例
1.   学习计划

  1. Solr的安装及配置

a)    Solr整合tomcat

b)    Solr后台管理功能介绍

c)    配置中文分析器

  2. 使用Solr的后台管理索引库

a)    添加文档

b)     删除文档

c)    修改文档

d)    查询文档

  3. 使用SolrJ管理索引库

a)    添加文档

b)    修改文档

c)    删除文档

d)    查询文档

  4. 电商搜索案例实现

a)    案例分析

b)    案例实现

 

2.   需求分析

使用Solr实现电商网站中商品信息搜索功能,可以根据关键字、分类、价格搜索商品信息,也可以根据价格进行排序。

全文搜索技术—Solr第1张

2.1. 实现方法

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

2.1.1.   使用Lucene实现

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

2.1.2.   使用solr实现

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

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

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

 全文搜索技术—Solr第2张

3.   Solr安装及配置

3.1. Solr的下载

从Solr官方网站(http://lucene.apache.org/solr/ )下载Solr4.10.3,根据Solr的运行环境,Linux下需要下载lucene-4.10.3.tgz,windows下需要下载lucene-4.10.3.zip。

Solr使用指南可参考:https://wiki.apache.org/solr/FrontPage。

3.2. Solr的文件夹结构

将solr-4.10.3.zip解压:

 全文搜索技术—Solr第3张

bin:solr的运行脚本

contrib:solr的一些贡献软件/插件,用于增强solr的功能。

dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。

docs:solr的API文档

example:solr工程的例子目录:

  • example/solr:

       该目录叫做solrHome,是一个包含了默认配置信息的Solr的Core目录。

  • example/multicore:

       该目录包含了在Solr的multicore中设置的多个Core目录。

  • example/webapps:

    该目录中包括一个solr.war,该war可作为solr的运行实例工程。

licenses:solr相关的一些许可信息

3.3. 运行环境

solr 需要运行在一个Servlet容器中,Solr4.10.3要求jdk使用1.7以上,Solr默认提供Jetty(java写的Servlet容器),这里使用Tocmat作为Servlet容器,环境如下:

Solr:Solr4.10.3

Jdk:jdk1.7.0_72

Tomcat:apache-tomcat-7.0.53

3.4. Solr整合tomcat

3.4.1.   Solr Home与SolrCore

创建一个Solr home目录,SolrHome是Solr运行的主目录,目录中包括了运行Solr实例所有的配置文件和数据文件,Solr实例就是SolrCore,一个SolrHome可以包括多个SolrCore(Solr实例),每个SolrCore提供单独的搜索和索引服务。

examplesolr是一个solr home目录结构,如下:

 全文搜索技术—Solr第4张

上图中“collection1”是一个SolrCore(Solr实例)目录 ,目录内容如下所示:

 全文搜索技术—Solr第5张 

说明:

collection1:叫做一个Solr运行实例SolrCore,SolrCore名称不固定,一个solr运行实例对外单独提供索引和搜索接口。

solrHome中可以创建多个solr运行实例SolrCore。

一个solr的运行实例对应一个索引目录。

conf是SolrCore的配置文件目录 。

data目录存放索引文件需要创建

3.4.2.   整合步骤

第一步:安装tomcat。D: empapache-tomcat-7.0.53

第二步:把solr的war包复制到tomcat 的webapp目录下。

把solr-4.10.3distsolr-4.10.3.war复制到D: empapache-tomcat-7.0.53webapps下。

改名为solr.war
第三步:solr.war解压。使用压缩工具解压或者启动tomcat自动解压。解压之后删除solr.war

第四步:把solr-4.10.3examplelibext目录下的所有的jar包(日志)添加到solr工程中

第五步:配置solrHome和solrCore。

  1)创建一个solrhome(存放solr所有配置文件的一个文件夹)。solr-4.10.3examplesolr目录就是一个标准的solrhome。

  2)把solr-4.10.3examplesolr文件夹复制到D: emp

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SQL性能调优C# 之 无法嵌入互操作类型(Word 或 Excel 操作)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Nutch 环境搭建及demo教程

目录: 环境搭建以及运行结果 Nutch教程译文 Nutch教程原文(如有侵权,通知后立即删除) 环境搭建ubuntu17.04 + jdk1.7 + Nutch 1.9 and Solr 4.10.1 参照 https://www.cs.upc.edu/~CAIM/lab/session4crawling.html 的版本说明 参照 https://wi...

(转载)Linux下DIR,dirent,stat等结构体详解

摘自:http://www.liweifan.com/2012/05/13/linux-system-function-files-operation/ 最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。 首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstre...

Java core dump

目录 生成Java core dump core dump分析 生成Java core dump 可以按照下面这个文章的指引来通过jni调用触发Java core dump Generating a Java Core Dump 基本思路是通过Java调用本地C代码,然后在C代码中触发一个错误,从而引发jvm crash。 需要注意两个问题 gc...

Linux(三)—— 项目部署环境搭建

项目部署环境搭建 目录 项目部署环境搭建 一、linux上网 二、rpm包管理 1、光盘挂载 2、安装卸载rpm包 3、查询是否安装 4、查看软件包 5、互相依赖关系的软件包 三、yum包管理 1、使用aliyun的yum源 2、使用yum安装软件 3、查看yum源的软件包 4、删除软件包 5、优化yum源 (1)使用本地源 (2)局域网y...

Angular引入第三方库

 原文已经写的很好了。原文链接: https://blog.csdn.net/yuzhiqiang_1993/article/details/71215232        加上2点给自己用,引入bootstrap样式,需要在angular-cli.json的styles中引入。        安装的类型描述文件@types/jquery在node_mod...

mariadb5.5.56二进制离线安装

在生产环境中一般使用发布好的二进制版本,简单概括一下安装过程:   1. 下载 地址为:https://downloads.mariadb.org/mariadb/5.5.56/   这里选择最新版本的5.5.56稳定版,进入后根据计算机位数选择,这里下载适用于64位操作系统的Linux x86_64版本   这里下载包含glibc和不包含glibc的都是...