一.前言 上篇介绍了搜索结果高亮的实现方法,本篇主要介绍搜索结果相关性排序优化. 二.相关概念 2.1 排序 默认情况下,返回结果是按照「相关性」进行排序的--最相关的文档排在最前. 2.1.1 相关性排序(默认) 在 ES 中相关性评分 由一个浮点数表示,并在搜索结果中通过「 _score 」参数返回,默认是按照 _score 降序排列. 2.1.2 按照字段值排序 使用「 sort 」参数实现,可指定一个或多个字段.然而使用 sort 排序过于绝对,它会直接忽略文档本身的相关度,因此仅适合在…
一.前言 上篇介绍了 ES 的基本概念及环境搭建,本篇将结合实际需求介绍整个实现过程及核心代码. 二.安装 ES ik 分析器插件 2.1 ik 分析器简介 GitHub 地址:https://github.com/medcl/elasticsearch-analysis-ik 提供两种分词模式:「 ik_max_word 」及「 ik_smart 」 分词模式 描述 ik_max_word 会将文本做最细粒度的拆分,比如会将"中华人民共和国国歌"拆分为"中华人民共和国,中华…
一.前言 本系列文章最终目标是为了快速搭建一个简易可用的搜索服务.方案并不一定是最优,但实现难度较低. 二.背景 近期公司在重构老系统,需求是要求知识库支持全文检索. 我们知道普通的数据库 like 方式效果及性能都不好,所以另寻出路,确定通过 Elasticsearch (下文简称「 ES 」)搜索引擎实现. 三.技术选型 因公司之前购买了阿里云的ES服务且版本为 5.5.3 ,下文选用的技术框架均基于此版本. ① Elasticsearch 5.5.3 一个基于Lucene的搜索服务器,提供…
一.前言 在实际使用中搜索结果中的关键词前端通常会以特殊形式展示,比如标记为红色使人一目了然.我们可以通过 ES 提供的高亮功能实现此效果. 二.代码实现 前文查询是通过一个继承 ElasticsearchRepository 的接口实现的,但是如果要实现高亮,这种方式就满足不了了,这里我们需要通过 ElasticsearchTemplate 来完成. 2.1 注入 ElasticsearchTemplate ① ElasticsearchTemplate 类简介 public class El…
一.前言 上篇介绍了 ES 的基础搜索,能满足我们基本的需求,然而在实际使用中还可能希望搜索「番茄」能将包含「西红柿」的结果也罗列出来,本篇将介绍如何实现同义词之间的搜索. 二.安装 ES 同义词插件 2.1 同义词插件简介 GitHub 地址:https://github.com/ginobefun/elasticsearch-dynamic-synonym 定时从 MySQL 中获取自定义词库,支持「扩展词」及「停用词」 2.2 安装步骤 参考 GitHub 中的项目说明 三.自定义分析器…
一.前言 上篇介绍了 ES 的同义词搜索,使我们的搜索更强大了,然而这还远远不够,在实际使用中还可能希望搜索「fanqie」能将包含「番茄」的结果也罗列出来,这就涉及到拼音搜索了,本篇将介绍如何具体实现. 二.安装 ES 拼音插件 2.1 拼音插件简介 GitHub 地址:https://github.com/medcl/elasticsearch-analysis-pinyin 2.2 安装步骤 ① 进入 ES 的 bin 目录 $ cd /usr/local/elasticsearch/bi…
前言 自己在搭建redis服务的时候碰到一些问题,好多人只告诉你怎么成功搭建,但是并没有整理过程中遇到的问题,所有楼主就花了点时间来整理下. linux环境安装redis 安装中的碰到的问题和解决办法 怎么在代码中使用安装的redis 设置用户名和密码 程序应用中碰到的问题 介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和h…
前言 这两天需要对接一个新的搜索业务,由于测试机器还没到位,所以就自己创造条件,通过在Windows上安装VM虚拟机,模拟整套环境,从而能快速进入核心业务的开发测试状态中. 系统环境安装配置 虚拟机VMware Workstation Pro 12 云盘下载地址:https://pan.baidu.com/s/1hrWx76k 序列号:FF1JR-AZGE6-480UP-1PPXV-W38TA Centos7 minimal镜像iso 下载地址:http://mirror.bit.edu.cn/…
Maven 仓库搜索服务 使用maven进行日常开发的时候,一个常见问题就是如何寻找需要的依赖,我们可能只知道需要使用类库的项目名称,但是添加maven依赖要求提供确切的maven坐标,这时就可以使用仓库搜索服务来根据关键字得到maven坐标. Sonatype Nexus 地址: http://repository.sonatype.org/ Nexus是当前最流行的开源Maven仓库管理软件,Nexus提供了关键字搜索,类名搜索,左边搜索,校验和搜索等功能.搜索后,页面清晰地列出了结果构件的…
solr,什么是solr,就是你要吃的东西“馊了”,不能吃了,out of date~ 嘛...开个玩笑,发音就是‘搜了’,专门用于搜索的一个开源框架,lunce就不说了,不好用,麻烦 来讲讲solr吧 目前最新更新的是6.0,4月7-8号更新的,哥不太喜欢用新出来的版本,多多少少会有bug,centos7出来后我至今使用的是6.5(实在无法忍受7啊...西吧) 6.0我也试着装了,但是会报错,日志文件找不到,自己新建一个也不行,去官方的jira看看,发现的确有这么一个bug,但是已经close…