This action will force synchronization from 陌溪/LearningNotes, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
起初蘑菇博客使用的Solr作为全文检索的,然后在代码开源后,发现留言区有些小伙伴更偏向于使用ElasticSearch作为检索工具,因此特意将蘑菇博客改成支持ElasticSearch检索的,但是有些小伙伴又还是想保留原来的Solr,后面我就想了个方法,也就是将同时支持多种搜索模式,Solr、ElasticSearch、SQL语句
SQL语句即使用like关键字去匹配博客的title和summary,然后返回结果,实现起来比较简单,同时我们不需要额外的启动全文检索服务,因此能够更加节省服务器的内存消耗,适用于博客部署在入门级的1核2G服务器
SQL搜索集成在mogu-web中,因此我们不需要启动mogu-search服务,只需要修改前端搜索请求接口即可
接口位置:
mogu_web\src\main\java\com\moxi\mogublog\web\restapi\SearchRestApi.java
修改前端接口
vue_mogu_web\src\api\search.js
把通过SQL搜索博客的方法开启,把Solr和ElasticSearch的方法注释
/**
* 通过SQL搜索博客
* @param params
*/
export function searchBlog (params) {
return request({
url: process.env.WEB_API + '/search/sqlSearchBlog',
method: 'get',
params
})
}
Solr是一个高性能,采用Java开发,SolrSolr基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
关于CentOS下Solr的安装可以参考:CentOS下Solr的安装和部署
关于Window下安装,最近很多小伙伴说solr不好配置,所以我特意把solr的上传到百度云了,小伙伴只需要下载后,放到tomcat的webapps目录下,然后修改一下solrhome的配置即可:
链接:https://pan.baidu.com/s/1gpKs7oixT8RBn8zuDSiEGQ
提取码:ditj
我们打开刚刚的解压的目录下的这个文件
solr\WEB-INF\web.xml
修改里面的地址,把路径改成你的solr_home目录即可
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>E:\Software\xampp\tomcat\webapps\solr\solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
下面我们开始将solr接入到mogu-search服务中,并提供全文检索服务
首先我们找到下面的接口位置,在这里面定义了一些 全文搜索、更新索引、删除索引、添加索引、初始化索引等方法,其中有些方法提供给其它服务消费的,比如更新索引、删除索引、添加索引都是在mogu-admin中博客的增删改操作后,通过rabbitmq发送消息到mogu-sms,然后mogu-sms根据对应的博客操作,调用mogu-search中对应的接口。
mogu_search\src\main\java\com\moxi\blog\elasticsearch\restapi\SolrRestApi.java
修改前端接口,打开下面的文件
vue_mogu_web\src\api\search.js
把通过Solr搜索博客的方法开启,把SQL和ElasticSearch的方法注释
/**
* 通过solr搜索博客
* @param params
*/
export function searchBlog (params) {
return request({
url: process.env.ELASTICSEARCH + '/search/solrSearchBlog',
method: 'get',
params
})
}
然后,打开mogu-search的pom.xml,添加solr相关的依赖,同时把ElasticSearch的依赖注释
<!-- 引入Solr相关依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
在application.yml文件中,添加solr的配置,同时把elasticSearch的配置注释掉
data:
solr:
host: http://localhost:8080/solr
core: collection1
repositories:
enabled: true
然后在 mogu-search中config文件文件夹下的SolrConfig注释打开即可
最后到mogu-sms服务下,找到下面的类
mogu_sms\src\main\java\com\moxi\mogublog\sms\listener\BlogListener.java
把里面的solr注释全部打开,然后ElasticSearch相关接口注释
// 删除Solr博客索引
searchFeignClient.deleteSolrIndexByUids(uid);
// 增加solr索引
searchFeignClient.addSolrIndexByUid(uid);
// 更新Solr索引
searchFeignClient.updateSolrIndexByUid(uid);
// 删除Solr索引
searchFeignClient.deleteSolrIndexByUid(uid);
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
和刚刚介绍的Solr一样,首先我们找到下面的接口位置,在这里面定义了一些 全文搜索、更新索引、删除索引、添加索引、初始化索引等方法。这里的功能和方法和solr是一直的,目的就是为了降低我们切换搜索时候繁杂的操作。
首先我们需要在pom文件引入对应的依赖,因为我提前引入了,如果该依赖已经被注释,只需要删除注释即可,同时我们再把solr的依赖注释掉
<!--引入ElasticSearch相关依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
下面是ElasticSearch对应的接口位置
mogu_search\src\main\java\com\moxi\blog\elasticsearch\restapi\ElasticSearchRestApi.java
同时我们需要把下面几个类的注释全部打开
同时我们把solr相关代码注释
然后修改application.yml文件,引入elasticsearch配置,同时注释掉下方的solr配置
data:
elasticsearch:
cluster-name: elasticsearch
cluster-nodes: localhost:9300
最后修改前端接口,打开下面的文件
vue_mogu_web\src\api\search.js
把把ElasticSearch搜索博客的方法开启,把SQL和Solr的方法注释
/**
* 通过ElasticSearch搜索博客
* @param params
*/
export function searchBlog (params) {
return request({
url: process.env.ELASTICSEARCH + '/search/elasticSearchBlog',
method: 'get',
params
})
}
最后到mogu-sms服务下,找到下面的类
mogu_sms\src\main\java\com\moxi\mogublog\sms\listener\BlogListener.java
把里面的solr注释全部打开,然后ElasticSearch相关接口注释
// 删除ElasticSearch博客索引
searchFeignClient.deleteElasticSearchByUids(uid);
// 增加ES索引
searchFeignClient.addElasticSearchIndexByUid(uid);
// 更新ES索引
searchFeignClient.addElasticSearchIndexByUid(uid);
// 删除ES索引
searchFeignClient.deleteElasticSearchByUid(uid);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。