elasticsearch实现搜索拼音然后高亮内容
es拼音插件https://github.com/medcl/elasticsearch-analysis-pinyin/tree/v1.6.0,具体用法此处不介绍,看readme
现在要实现一个搜场馆的功能,需要按场馆名称首字母缩写也能搜索出场馆,还必须要高亮显示首拼对应的汉字部分。
analysis可定义如下:
"analysis": {"tokenizer": {"my_pinyin" : {"type" : "pinyin","first_letter" : "only"}},"filter": {"pinyin_filter" : {"type" : "pinyin","first_letter" : "only","padding_char" : ""}},"analyzer": {"pinyin_analyzer" : {"tokenizer" : "ansj_query_token","filter" : "pinyin_filter"},"pinyin_all_analyzer" : {"tokenizer" : "my_pinyin","filter" : "word_delimiter"},"index_ansj": {"type": "custom","tokenizer": "ansj_index_token"},"query_ansj": {"type": "custom","tokenizer": "ansj_query_token"}}}
分词部分使用的是ansj分词。
场馆mapping如下:
{"properties": {"name": {"type": "string","term_vector" : "with_positions_offsets","index_analyzer": "index_ansj","search_analyzer": "query_ansj","fields": {"pinyin": {"type": "string","index_analyzer": "pinyin_analyzer","search_analyzer": "query_ansj"}}},"address": {"type": "string","term_vector" : "with_positions_offsets","index_analyzer": "index_ansj","search_analyzer": "query_ansj"},"createTime" : {"type": "date","format": "yyy-MM-dd HH:mm:ss"}}
}
name字段采用的multi_fields字段,创建name索引的同时也会创建name.pinyin索引。
搜索query可以这么写:
{"_source": ["createTime"], "query": {"multi_match": {"type": "most_fields","query": "cs","fields": ["name", "name.pinyin","address"],"minimum_should_match": "-20%"}},"sort": [{"createTime":{"order":"desc"}}],"highlight": {"boundary_chars":".,!? \t\n,。!?","pre_tags" : ["<font color='red'>"],"post_tags" : ["</font>"],"fields": {"name" : {"number_of_fragments" : 0},"name.pinyin" : {"number_of_fragments" : 0},"address" : {"number_of_fragments" : 0}}}
}
比如有一个场馆名字叫测试场馆,那么你输入“cs”搜索的时候也能搜索到该场馆。并且能将场馆名高亮显示,区别就是输入的是首拼的话,高亮值在name.pinyin上,如果输入的是汉字的话,高亮值在name上,name和name.pinyin高亮输出的内容是一样的。
{"took": 5,"timed_out": false,"_shards": {"total": 1,"successful": 1,"failed": 0},"hits": {"total": 3,"max_score": null,"hits": [{"_index": "huiti_app_v1","_type": "stadium","_id": "id1","_score": null,"_source": {"createTime": "2015-01-01 00:00:00"},"highlight": {"name.pinyin": ["<font color='red'>测试</font>场馆1"]},"sort": [1420070400000]},{"_index": "huiti_app_v1","_type": "stadium","_id": "id2","_score": null,"_source": {"createTime": "2015-01-01 00:00:00"},"highlight": {"name.pinyin": ["<font color='red'>测试</font>场馆2"]},"sort": [1420070400000]},{"_index": "huiti_app_v1","_type": "stadium","_id": "id3","_score": null,"_source": {"createTime": "2015-01-01 00:00:00"},"highlight": {"name.pinyin": ["<font color='red'>测试</font>场馆3"]},"sort": [1420070400000]}]}
}
elasticsearch实现搜索拼音然后高亮内容相关推荐
- Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)
简介 这篇文章主要介绍了Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)以及相关的经验技巧,文章约21106字,浏览量320,点赞数5,值得参考! ...
- springboot——集成elasticsearch进行搜索并高亮关键词
目录 1.elasticsearch概述 3.springboot集成elasticsearch 4.实现搜索并高亮关键词 1.elasticsearch概述 (1)是什么: Elasticsearc ...
- SpringBoot ElasticSearch 全文搜索
2019独角兽企业重金招聘Python工程师标准>>> 一.pom.xml配置 SpringBoot版本1.5.6https://blog.csdn.net/kingice1014/ ...
- 无法从elasticsearch节点检索版本信息_【Elasticsearch 7 搜索之路】(一)什么是 Elasticsearch?...
本篇文章对 Elasticsearch 做了基本介绍,在后续将通过专栏的方式持续更新,本系列以 Elasticsearch7 作为主要的讲解版本,欢迎各位大佬指正,共同学习进步涨工资! 一般涉及大型数 ...
- ElasticSearch(七) 搜索
title: ElasticSearch(七) 搜索 tags: ElasticSearch author: Clown95 搜索 在前面,已经介绍了在ElasticSearch索引中处理数据的基础知 ...
- Springboot集成elasticsearch 使用IK+拼音分词
Springboot集成elasticsearch 使用IK+拼音分词 docker安装ES 下载 docker pull docker.elastic.co/elasticsearch/elasti ...
- SpringBoot 集成 ElasticSearch 全文搜索(步骤非常的详细)
目录 一.pom.xml配置 二.项目代码集成示例 Yml配置 存储映射实体 @Document注解 @Field注解 创建Repository 三.安装ES 下载安装ES 测试默认分词 四.Ik分词 ...
- ElasticSearch入门-搜索(java api)
ElasticSearch入门-搜索(java api) package com.qlyd.searchhelper;import java.util.Map;import net.sf.json.J ...
- ElasticSearch分布式搜索框架
目录 一. ElasticSearch背景 1.1 Elasticsearch介绍 1.2 Elasticsearch现状 1.3 Es最佳实践 二. 环境配置安装 2.1 Elasticsearch ...
- elasticsearch分布式搜索配置文件详解
2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch是一个开源的分布式实时搜索与分析引擎,支持云服务.它是基于Apache Lucene搜索引擎的类库创 ...
最新文章
- 字体在ppt中可以整体替换吗_干货,做PPT时这样选择字体,瞬间提升幻灯片档次,看完你就懂了...
- LDAP 中 CN, OU, DC 的含义(ldap学习一)
- 中石油《计算机应用基础》,中石油华东《计算机应用基础》2018年秋学期在线作业(一).doc...
- ElasticSearch 2 (7) - 基本概念
- iOS之NSAttributedString-------字符属性
- java单例模式之线程安全问题
- mysql分组后组内排序_图解排序 3/10 希尔排序
- 列顺序对SQL Server复合索引的影响
- Python: 如何安装 torch 对应的 torchvision 版本?
- 数字人轻松学习Blender系列之八:建模-2
- QSS实践汇总(3)——QComboBox样式(风格)
- anguarjs 图片预览_一键精准提取图片文字,这么高效的app确定不盘一下嘛
- bt4-pre-final下用spoonwep+spoonwpa破解wep或wpa加密的无线网络
- 揭开均线系统的神秘面纱_揭开定价创造力的黑暗艺术神秘面纱
- 阿里云服务器被恶意程序攻击
- linux环境下安装node
- TL431稳压输出Vout=4V
- 【机器学习】多项式回归案例五:正则惩罚解决过拟合(Ridge回归和Lasso回归)
- 城市空气质量分析与预测
- 随手记录第六话 -- 在Mac上搭建整个开发环境记录(Java、Python、Vue、Docker、idea)
热门文章
- 技巧推荐 PDF文件怎么转成word文档
- fxp连接失败_用FLASHFXP连接站点,总显示连接失败(连接丢失),该怎么办呢
- The “fxp/composer-asset-plugin“ plugin was skipped because it requires a Plugin API version (“^1.0“)
- css深入理解flex布局中的剩余空间分配规则——flex-grow,flex-shrink和flex-basis
- CUDA中的Warp Shuffle
- 网吧游戏二层更新linux,图文细说网吧游戏更新软件【处理手段】
- JS 的内联模式与外联模式
- lighttpd和php关系,Lighttpd是什么
- scrapy技术进阶-URL路径依赖
- ubuntu两个显示器只出一个_Ubuntu设置笔记本电脑双显示器(linux)