前言:

原文地址:

http://www.cnblogs.com/JimmyBright/p/7156069.html

使用搜索引擎,我们常规的数据查询会快很多,还可以对关键词进行中文分词查询,返回一些高亮,就和我们每天使用的搜索服务一样。我们这里要使用Solr来进行我们的搜索服务搭建。如果你使用php,很可能你会在网上查到Sphinx这个搜索引擎,说是对php支持的很好,不要迟疑,远离它,这个尼玛官网都没了,已经很多年没更新了,中文更是没办法支持,功能更是非常有限。Solr一直在更新版本,用的人很多,官网http://lucene.apache.org/solr/,可以了解详情。

Solr是一套java写的独立搜索引擎,当然了,如果你不会java,没有任何关系。

废话少说,我们先看怎么在服务器上安装支持中文的Solr服务(本文是基于solr最新的6.5+版本),

1:安装

首先看下服务器的java环境配置

如果低于1.8,你就要先升级服务器环境了,这个我就不描述了。

java环境配置完成之后,进入你想要安装搜索引擎的目录,直接在官网下载solr的压缩包wget https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/6.6.0/solr-6.6.0.tgz

(我前段时间在项目中用的时候还是6.5.1版本,现在已经6.6.0了,我这为了方便还使用6.5.1的案例描述)

下载完成之后解压目录是这样子的

打开example进入

solr-6.6.0/example/example-DIH/solr

会发现已经几个demo样子的目录

[root@10-10-87-38 solr]# ls
atom db mail solr solr.xml tika
[root@10-10-87-38 solr]#

这里需要说明一下,这个atom、db、mail等都是单独的搜索业务,大的项目里可能会拆分出像这样很多的搜索业务类型。我们复制其中的一个,如mail整个目录复制到/usr/solr-6.6.0/server/solr,

这个目录才是搜索引擎最终的查找目录,所有搜索的配置以及数据库的索引等都在这个目录下,mail 下的文件结构是这样的

[root@10-10-87-38 mail]# ls
conf core.properties data
[root@10-10-87-38 mail]#

2:启动搜索引擎

配置搜索,只需要关注conf就可以了,打开conf

[root@10-10-87-38 conf]# ls
admin-extra.html clustering lang mapping-FoldToASCII.txt solrconfig.xml synonyms.txt
admin-extra.menu-bottom.html currency.xml mail-data-config.xml mapping-ISOLatin1Accent.txt spellings.txt update-script.js
admin-extra.menu-top.html elevate.xml managed-schema protwords.txt stopwords.txt xslt
[root@10-10-87-38 conf]#

这时候应该就可以启动一个空的搜索服务了。

进入Solr的根目录

[root@10-10-87-38 bin]# ls
init.d install_solr_service.sh oom_solr.sh post solr solr.cmd solr.in.cmd solr.in.sh
[root@10-10-87-38 bin]# ./solr start
WARNING: Starting Solr as the root user is a security risk and not considered best practice. Exiting.
Please consult the Reference Guide. To override this check, start with argument '-force'
[root@10-10-87-38 bin]# ./solr start -force
Waiting up to 180 seconds to see Solr running on port 8983 [|]
Started Solr server on port 8983 (pid=9757). Happy searching!
[root@10-10-87-38 bin]#

这时候搜索引擎已经启动了,你可以在浏览器上打开一个Solr的管理界面,地址框输入

http://10.10.87.38:8983/solr/#/mail

注意左边红色框,下拉框里会显示上面你从example里复制过来的项目,红框里有一个Query,就是搜索关键词用的,你可以在这里边测试你的搜索服务是否正常,具体你可以自己点进去看一看就明白了,当然了,随便复制过来的mail肯定是不能工作的,因为这个没有连接到你自己的数据库。

3:配置Solr

重新回到/solr-6.5.1/server/solr目录下

我这复制了mail,然后改名字为crm,作为我自己的搜索模块。下面就要配置这个crm了

进入

/solr-6.5.1/server/solr/crm/conf

[root@10-10-87-38 conf]# ls
admin-extra.html clustering db-data-config.xml managed-schema protwords.txt stopwords.txt xslt
admin-extra.menu-bottom.html currency.xml elevate.xml mapping-FoldToASCII.txt solrconfig.xml synonyms.txt
admin-extra.menu-top.html dataimport.properties lang mapping-ISOLatin1Accent.txt spellings.txt update-script.js
[root@10-10-87-38 conf]#

配置db-data-config.xml

这个是配置数据库的,由于我这使用的mysql,然后要搜索的只有一张表,所以配置就比较简单了

你要搜索很多表的话,就配置多个entity,(我这业务上没这需求,咱们没研究这块)这个配置是让solr对数据库的字段内容建立索引并保存下来,搜索的时候不再查找数据库,直接查找索引返回结果

配置solrconfig.xml

这个是solr本身的配置,基本包含高亮显示,返回字段长短,查询超时设置等等,如果不做高级定制,这个文件基本不用动,唯一要注意的是

<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>

配置managed-schema

这个文件很重要了,你可以在这里配置你要搜索的字段的属性,这里面你会看到很多的field节点,看一下就会知道怎么设置了。

4:配置中文搜索

默认的是不支持中文搜索的,我们还要添加中文的jar包

网上搜索一下ik-analyzer,下载ik中文分词包放在lib文件夹下

[root@10-10-87-38 solr]# cd crm/
[root@10-10-87-38 crm]# ls
conf core.properties data lib
[root@10-10-87-38 crm]# cd lib
[root@10-10-87-38 lib]# ls
IKAnalyzer.cfg.xml ext.dic ik-analyzer-solr5-5.x.jar solr-analyzer-ik-5.1.0.jar
derby-10.9.1.0.jar hsqldb-1.8.0.10.jar mysql-connector-java-5.1.42.jar stopword.dic
[root@10-10-87-38 lib]# pwd
/solr-6.5.1/server/solr/crm/lib
[root@10-10-87-38 lib]#

分词包装好后要返回到managed-schema配置中文分词的支持

在文件末尾添加节点

然后在你想要搜索中文的字段里添加ik分词

5:完成Solr

保存所有修改过的配置,然后重启Solr服务。再从浏览器进入Solr管理界面。

首先我们要验证一下中文分词是否配置成功了(中文没配置成功,我们的搜索就没有意义)

像这样子的,你的中文分词就配置成功了。

下面就可以测试你的搜索了

看到这样的界面就说明Solr的搜索引擎服务配置完全成功了!

现在可以庆祝第一阶段的胜利了。

接下来我们就要使用PHP来访问搜索结果,封装接口提供给前端调用。^_^

PHP-从零开始使用Solr搜索引擎服务(上)的更多相关文章

  1. PHP-从零开始使用Solr搜索引擎服务(下)

    前言: 原文地址: http://www.cnblogs.com/JimmyBright/p/7156085.html 前面在配置完成Solr服务之后,在浏览器上可以打开Solr的管理界面,这个界面几 ...

  2. Solr04 - 在Jetty和Tomcat上部署Solr单机服务

    目录 1 准备安装环境 2 通过内部Jetty服务器启动 3 通过配置Tomcat服务器启动 3.1 删除不需要的应用 3.2 修改服务端口 3.3 部署solr.war 3.4 扩展: 虚拟目录发布 ...

  3. Lucene/Solr搜索引擎开发笔记 - 第1章 Solr安装与部署(Jetty篇)

    一.为何开博客写<Lucene/Solr搜索引擎开发笔记> 本人毕业于2011年,2011-2014的三年时间里,在深圳前50强企业工作,从事工业控制领域的机器视觉方向,主要使用语言为C/ ...

  4. Solr搜索引擎搭建详细过程

    1    什么是solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr可以独立运行在Jetty.Tomcat等这些Servlet容器中 ...

  5. Lucene/Solr搜索引擎开发笔记 - 第2章 Solr安装与部署(Tomcat篇)

    一.安装环境 图1-1 Tomcat和Solr的版本 我本机目前使用的Java版本为JDK 1.8,因为Solr 4.9要求Java版本为1.7+,请注意. 二.Solr部署到Tomcat流程 图1- ...

  6. 《如何将windows上的软件包或文件上传到linux服务上》

    昨天晚上朋友让我帮他简单的搭建个环境,他公司让他做款软件测试温度的,他自己搞的是嵌入式,在公司担任的是软件工程师,应届毕业生.也可能他们搞嵌入式的对这个linux系统不太熟,不会把windows上的软 ...

  7. Apache Solr JMX服务 RCE 漏洞复现

    Apache Solr JMX服务 RCE 漏洞复现 ps:Apache Solr8.2.0下载有点慢,需要的话评论加好友我私发你 0X00漏洞简介 该漏洞源于默认配置文件solr.in.sh中的EN ...

  8. Solr搜索引擎服务器学习笔记

    Solr简介 采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能 ...

  9. CVE-2019-12409-Apache Solr JMX服务远程代码执行

    漏洞分析 https://www.freebuf.com/vuls/218730.html 漏洞介绍 该漏洞源于默认配置文件solr.in.sh中的ENABLE_REMOTE_JMX_OPTS配置选项 ...

随机推荐

  1. Kafka发送到分区的message是否是负载均衡的?

    首先说结论,是负载均衡的.也就是说,现在有一个producer,向一个主题下面的三个分区发送message,没有指定具体要发送给哪个partition, 这种情况,如果是负载均衡的,发送的消息应该均匀 ...

  2. js数组知识点总结及经典笔试题

    1.判断数组 这是笔试里经常会出现的知识考察点,总结一下 (1)Array.isArray()方法判断 var a=[]; Array.isArray(a) //返回true var b='hello ...

  3. 服务发现与消费 --> Spring Cloud Eureka

    在上两篇文章中,我们已经搭建起微服务架构中的核心组件 服务注册 中心(包括单节点模式和高可用模式).同时, 还对上一章中实现的Spring Boot入门程序 做了改造. 通过简单的配置,使该程序注册到 ...

  4. 使用maven&&make-distribution.sh编译打包spark源码

    1>基础环境准备: jdk1.8.0_101 maven 3.3.9scala2.11.8 安装好上述软件,配置好环境变量,并检查是否生效. 2>配置maven:intellij idea ...

  5. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第1节: FastThreadLocal的使用和创建

    Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 概述: FastThreadLocal我们在剖析堆外内存分配的时候简单介绍过, 它类似于JDK的ThreadL ...

  6. Harbor 学习分享系列4 - Harbor常用功能实验

    前言 本文为Harbor技术分享系列的第4部分也是初级部分的完结篇,下个阶段作者将会进阶分享,更多详细的内容将会将会在文中介绍. 云盘链接 链接:https://pan.baidu.com/s/1PT ...

  7. OSSEC 架构

    OSSEC由很多部分组成,它有一个集中的管理端,用于监控.并接收来自代理.syslog.数据库或无代理设备的日志. 管理端(服务器) 管理端属于OSSEC部署中的中心部分.它存储了文件完整性检测数据库 ...

  8. js传输txt文档内容

    要求:实现修改text文档内容,即可将text修改内容传到页面显示: HTML: <!doctype html> <html lang="en"> < ...

  9. dubbo实际应用中的完整的pom.xml

    http://blog.csdn.net/rodjohnsondoctor/article/details/39030601

  10. 第一节 Linux系统简介

    一.Linux定义 Linux 是一个操作系统,就像你多少已经了解的 Windows(xp,7,8)和 Max OS. 操作系统在整个计算机系统中的角色: Linux 是系统调用和内核那两层,直观的来 ...