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实现搜索拼音然后高亮内容相关推荐

  1. Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)

    简介  这篇文章主要介绍了Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)(示例代码)以及相关的经验技巧,文章约21106字,浏览量320,点赞数5,值得参考! ...

  2. springboot——集成elasticsearch进行搜索并高亮关键词

    目录 1.elasticsearch概述 3.springboot集成elasticsearch 4.实现搜索并高亮关键词 1.elasticsearch概述 (1)是什么: Elasticsearc ...

  3. SpringBoot ElasticSearch 全文搜索

    2019独角兽企业重金招聘Python工程师标准>>> 一.pom.xml配置 SpringBoot版本1.5.6https://blog.csdn.net/kingice1014/ ...

  4. 无法从elasticsearch节点检索版本信息_【Elasticsearch 7 搜索之路】(一)什么是 Elasticsearch?...

    本篇文章对 Elasticsearch 做了基本介绍,在后续将通过专栏的方式持续更新,本系列以 Elasticsearch7 作为主要的讲解版本,欢迎各位大佬指正,共同学习进步涨工资! 一般涉及大型数 ...

  5. ElasticSearch(七) 搜索

    title: ElasticSearch(七) 搜索 tags: ElasticSearch author: Clown95 搜索 在前面,已经介绍了在ElasticSearch索引中处理数据的基础知 ...

  6. Springboot集成elasticsearch 使用IK+拼音分词

    Springboot集成elasticsearch 使用IK+拼音分词 docker安装ES 下载 docker pull docker.elastic.co/elasticsearch/elasti ...

  7. SpringBoot 集成 ElasticSearch 全文搜索(步骤非常的详细)

    目录 一.pom.xml配置 二.项目代码集成示例 Yml配置 存储映射实体 @Document注解 @Field注解 创建Repository 三.安装ES 下载安装ES 测试默认分词 四.Ik分词 ...

  8. ElasticSearch入门-搜索(java api)

    ElasticSearch入门-搜索(java api) package com.qlyd.searchhelper;import java.util.Map;import net.sf.json.J ...

  9. ElasticSearch分布式搜索框架

    目录 一. ElasticSearch背景 1.1 Elasticsearch介绍 1.2 Elasticsearch现状 1.3 Es最佳实践 二. 环境配置安装 2.1 Elasticsearch ...

  10. elasticsearch分布式搜索配置文件详解

    2019独角兽企业重金招聘Python工程师标准>>> Elasticsearch是一个开源的分布式实时搜索与分析引擎,支持云服务.它是基于Apache Lucene搜索引擎的类库创 ...

最新文章

  1. 字体在ppt中可以整体替换吗_干货,做PPT时这样选择字体,瞬间提升幻灯片档次,看完你就懂了...
  2. LDAP 中 CN, OU, DC 的含义(ldap学习一)
  3. 中石油《计算机应用基础》,中石油华东《计算机应用基础》2018年秋学期在线作业(一).doc...
  4. ElasticSearch 2 (7) - 基本概念
  5. iOS之NSAttributedString-------字符属性
  6. java单例模式之线程安全问题
  7. mysql分组后组内排序_图解排序 3/10 希尔排序
  8. 列顺序对SQL Server复合索引的影响
  9. Python: 如何安装 torch 对应的 torchvision 版本?
  10. 数字人轻松学习Blender系列之八:建模-2
  11. QSS实践汇总(3)——QComboBox样式(风格)
  12. anguarjs 图片预览_一键精准提取图片文字,这么高效的app确定不盘一下嘛
  13. bt4-pre-final下用spoonwep+spoonwpa破解wep或wpa加密的无线网络
  14. 揭开均线系统的神秘面纱_揭开定价创造力的黑暗艺术神秘面纱
  15. 阿里云服务器被恶意程序攻击
  16. linux环境下安装node
  17. TL431稳压输出Vout=4V
  18. 【机器学习】多项式回归案例五:正则惩罚解决过拟合(Ridge回归和Lasso回归)
  19. 城市空气质量分析与预测
  20. 随手记录第六话 -- 在Mac上搭建整个开发环境记录(Java、Python、Vue、Docker、idea)

热门文章

  1. 技巧推荐 PDF文件怎么转成word文档
  2. fxp连接失败_用FLASHFXP连接站点,总显示连接失败(连接丢失),该怎么办呢
  3. The “fxp/composer-asset-plugin“ plugin was skipped because it requires a Plugin API version (“^1.0“)
  4. css深入理解flex布局中的剩余空间分配规则——flex-grow,flex-shrink和flex-basis
  5. CUDA中的Warp Shuffle
  6. 网吧游戏二层更新linux,图文细说网吧游戏更新软件【处理手段】
  7. JS 的内联模式与外联模式
  8. lighttpd和php关系,Lighttpd是什么
  9. scrapy技术进阶-URL路径依赖
  10. ubuntu两个显示器只出一个_Ubuntu设置笔记本电脑双显示器(linux)