接着上篇来,上篇其实里面有一些隐藏的问题:

比如说: 水果手机,苹果手,苹果手机,iphone,最好用的手机 => iphone手机

我想要在搜索苹果手机的时候能够得到汇总的结果是:iPhone手机

但是在我们的实际使用中,始终得不到这样的结构。原因如下:

同义词 --->> 获取同义词  :要求的是每个词都必须在分词里面是存在的,分词 是搜索引擎里面很重要的一个前提条件,这也是一样的,假如我们的分词器 IK,或者 ansj 默认的词库没有:水果手机 这个词的话,那么搜索同义词是就匹配不到:iphone手机,需要你将水果手机作为一个完整的词,需要配置进ElasticSearch自定义词库。查看怎么配置

坑也填完了,接下来我们实现兼容本地词库以及远程词库。

第二种方式远程文件配置

首先我们准备一个可访问的本地接口服务,这是JAVA后端,使用springboot

package com.zdx.word.interfaces.controller;import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** @Class SynonymController* @Author 作者姓名:刘兴* @Version 1.0* @Date 创建时间:2019-01-17 14:29* @Direction 类说明*/
@RequestMapping
@Controller
public class SynonymController {public static final String ETag = "ETag" ;public static final String lastModified = "Last-Modified" ;public static int version = 0 ;@GetMapping("/synonym")@ResponseBodypublic String wordSynonym(HttpServletRequest request, HttpServletResponse response) {//业务操作,比如有新的同义词过来了,我们需要变更版本,然后Elasticsearch 的定时器得到版本变动了,才会将数据视为更新数据if( true ){version += 1 ;}//返回必须要带下面的参数response.setHeader( ETag ,version + "" );response.setHeader( lastModified ,version + "" );response.setContentType("text/plain");return "管廊,地下管廊,地铁管廊,高铁管廊,隧道管廊 => 通用管廊" ;}}

访问地址:http://localhost:8080/synonym

下面是设置远程调用接口, 本地同义词的配置Elastic端的代码:使用Kibana

PUT /megacorp
{"mappings": {"mysynonym": {"properties": {"name":{"type": "text","analyzer": "ik-index",  //指定索引时候用的解析器"search_analyzer": "ik-smart" //指定搜索时候用的解析器}}}},"settings": {"analysis": {"filter": {"remote_synonym": {"type" : "dynamic_synonym","synonyms_path" : "http://localhost:8080/synonym","interval": 60 // 没60s调取一次接口},"local_synonym" : {"type" : "dynamic_synonym","synonyms_path" : "analysis/synonyms.txt"  }},"analyzer": {"ik-index": {"type": "custom","tokenizer": "ik_max_word","filter": [ "remote_synonym", //对远程同义词进行了过滤"local_synonym"   //对本地同义词进行了过滤]},"ik-smart": {"type": "custom","tokenizer": "ik_smart","filter": ["local_synonym"]}}}}
}

我们要查一下,我的远程接口返回的数据shif是否会自动加载至同义词的接口中:

GET /megacorp/_analyze
{"analyzer": "ik-index","text": "美女"
}

翻车了,远程的这个有问题 ------》》》》》》》

Elasticsearch 使用同义词 二相关推荐

  1. Elasticsearch 使用同义词 一

    elasticsearch 使用同义词 先说一下,为什么使用同义词.任何一种技术的实现,都需要为我们的使用场景服务:下面就是我将要实现功能的使用场景 需求一:要获取一个词汇的同义词.比如输入:美女   ...

  2. python elasticsearch 入门教程(二) ---全文搜索

    python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...

  3. Elasticsearch倒排索引(二)深入Term Index

    Elasticsearch倒排索引(二)深入Term Index 1. 理解Term Index 2. 减小Term Index存储空间 -- FST 1. 理解Term Index 在<Ela ...

  4. Elasticsearch入门(二) API

    Elasticsearch入门(二) API VSCode部署 RESTful API 索引库管理 列举索引 创建job_idx索引库 查看索引 删除索引 数据管理 数据插入 数据更新 删除数据 Bu ...

  5. ElasticSearch Java Api(二) -检索索引库

    一.准备数据 String data1 = JsonUtil.model2Json(new Blog(1, "git简介", "2016-06-19", &qu ...

  6. ElasticSearch快速入门二(Restful介绍)

    本节课从三个方便讲解 什么是restful ? API: Application Programming Interface的缩写,中文意思就是应用程序接口. ●XML: . 可扩展标记语言,是一种程 ...

  7. ElasticSearch优化系列二:机器设置(内存)

    点击"阅读原文"直接打开[北京站 | GPU CUDA 进阶课程]报名链接 预留一半内存给Lucence使用 一个常见的问题是配置堆太大.你有一个64 GB的机器,觉得JVM内存越 ...

  8. Elasticsearch集成(二)

    49-框架集成-SpringData-整体介绍 Spring Data是一个用于简化数据库.非关系型数据库.索引库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷,并支持 map ...

  9. ElasticSearch学习笔记二 初识Elasticsearch

    初识Elasticsearch Elasticsearch简介 Elasticsearch术语及概念 文本(Text) 索引词/精确值(term) 精确值 VS 全文 分析(Analysis)与分析器 ...

  10. ElasticSearch学习笔记(二)—结构了解和索引文档增删改

    前面学习了ElasticSearch的概况以及一些配套插件的安装.这篇旨在记录对ES结构的了解和一些基本的操作. ElasticSearch结构: 对于ES来说,有几个专有名词.比如索引,类型,id这 ...

最新文章

  1. 阿里云云盾-风险识别-增强版模式发布
  2. 算法练习day18——190409(Manacher)
  3. Java刷漆问题代码_Java实现蓝桥杯历届试题格子刷油漆
  4. [裴礼文数学分析中的典型问题与方法习题参考解答]4.5.3
  5. 【C++】C++中的头文件(.h)—详解(1)
  6. 一些实用的编程模式 | Builder模式能用来解决什么问题?
  7. SpringBoot RESTful 应用中的异常处理小结
  8. 项目总结:初稿与定稿,方向相差180度
  9. php读取excel文件_php读取excel文件数据的导入和导出
  10. lintcode 983. 棒球游戏
  11. 5部靠身材和脸蛋撑起了整部电影,女主光环太刺眼,部部是经典!
  12. MFC AFX_EXT_CLASS
  13. 使用ColorMatrix简单处理色彩平衡
  14. OAI搭建编译eNB报错
  15. java注册账号_Java实现简单登录注册账号操作
  16. uniapp 引导页 启动页 闪屏页功能介绍及部分功能实现
  17. [软件项目管理] BCWS、BCWP、ACWP的理解
  18. 硬件版--苹果ios免越狱脚本实现硬件方案
  19. chaos engineering读书笔记
  20. SpringBoot实现小程序微信支付统一下单

热门文章

  1. 为git配置kdiff3,生效gitk
  2. office2007无法卸载 无法安装
  3. 【Tableau server7.0_私人版本】Tableau Server Certified Associate(Tableau CA) 考前预备
  4. 计算机如何设置光驱启动,电脑如何设置光驱启动(含UEFI BIOS方法)?
  5. .nav ul .mall a:hover是什么意思
  6. web前端需要学MySQL吗_HTML是web前端工程师必须要学的
  7. 如何传输本地文件到服务器,本地传输文件到服务器
  8. 常用会计科目名词解释
  9. buu RSA what(共模攻击+base64隐写)
  10. 大学计算机考试常用函数,大学计算机二级考试 ExceL表格函数