1、使用“建议”的方法:在query body的json结构体中,增加suggest节点;或者使用特殊的REST端点

2、es自带有多个不同的suggest实现,用来纠正用户的拼写错误及创建自动补全等功能

3、如果索引中文档较少,则可能找不到合适建议的结果

4、有三种那个suggester:term suggester,phrase suggester,complete suggester(自动完成)

5、使用suggest REST端点

POST 'localhost:9200/myindex/_suggest?pretty'
{
"first_suggestion":{
"test":"world war ii",
"term":{
"field":"_all"
}
},
"second_suggestion":{
"text":"raceing",
"term":{
"field":"text"
}
}
}

查询后将返回建议列表

6、在查询请求中包含建议请求

POST ‘localhost:/myindex/_search?pretty'
{
"query":{
"match_all":{}
},
"suggest":{
"first_suggestion":{
"text":"wordl war ii",
"term":{
"field":"_all"
}
},
  "second_suggestion":{
    "text":"wordl war ii",
    "term":{
     "field":"_all"
    }
   }
}
}

查询结果包括了“查询结果、建议结果”
7、事实上,term suggester 基于编辑距离来运作。这意味着,加一次通过增删改某些字符转化为原词所改动的字符数越少,它越有可能是最佳选择。距离worl转化为work,改动了一个字符,因此编辑距离为1.当然,suggester的text文本需要先经过分词转化为词项。对原始输入句子的每个词都给出建议列表。

8、term suggester的通用配置选项

  • text:原始输入,有错误的问题
  • field:制定产生建议的字段
  • analyzer:
  • size:每个词项的最大建议词数量,默认5
  • sort:
  • suggest_mode:可用3个“missing、popular、always”。默认值missing,要求es对text参数的词项做一个区分对待,如果该词项不存在于索引中,则返回建议词,否则,不返回;如果取值为“popu lar”,则es在生成建议词做一个判断,如果建议词比原词更受欢迎,则返回,否则不返回。如果取值为“always”,指为每个text中的每个词生成建议词。
  • 其他配置参数

9、phrase suggester:基于n-gram方法将索引中词项切分成gram。举例,如果将单词“mastering”采用bi-bigrams方法切分,则切分结果为:ma as st te er ri in ng

10、phrase suggester支持高亮配置

11、completion suggester 自动完成:es设计者们决定在索引过程中创建类似FST的数据结构,并把它存储在索引中,需要的时候可以加载进内存

12、为了使用使用基于前缀的suggester,我们需要在定义mappings时,某个字段使用“completion”类型的字段来索引数据。

13、如果使用自动完成功能,其类型是强制提供的,必须是complete。

14、请记住payload必须是一个json对象,{"books":["1234","3243"]}

读《深入理解Elasticsearch》点滴-改正用户拼写错误的更多相关文章

  1. 深入理解ElasticSearch(PDF版 内含目录)

    深入理解ElasticSearch 介绍: 本书涵盖了Elasticsearch的许多中高级功能,并介绍了缓存.ApacheLucene库以及监控等模块的内部运作机制.其中,还涉及一些实用案例,比如配 ...

  2. mysql系列:加深对脏读、脏写、可重复读、幻读的理解

    关于相关术语的专业解释,请自行百度了解,本文皆本人自己结合参考书和自己的理解所做的阐述,如有不严谨之处,还请多多指教. 事务有四种基本特性,叫ACID,它们分别是: Atomicity-原子性,Con ...

  3. 《深入理解Elasticsearch》README

    书目 <深入理解ElasticSearch>拉斐尔·酷奇,马雷克·罗戈任斯基[著]张世武,余洪森,商旦[译] 机械工业出版社,2016.1 本系列包括以下8篇笔记 第01章 Elastic ...

  4. 读《深入理解Elasticsearch》点滴-Elastic HQ监控工具

    1.多节点监控 2.类似war功能部署,tomcat即可使用 3.免费 4.ElasticHQ supports all major version of Elasticsearch from ver ...

  5. 读《深入理解Elasticsearch》点滴-聚合-top_hits

    以下是官网手册(部分)(v5.1) 直接直接看官网手册 https://www.elastic.co/guide/en/elasticsearch/reference/5.1/search-aggre ...

  6. 读《深入理解Elasticsearch》点滴-查询二次评分

    理解二次评分 二次评分是指重新计算查询返回文档中指定个数文档的得分,es会截取查询返回的前N个,并使用预定义的二次评分方法来重新计算他们的得分 小结 有时候,我们需要显示查询结果,并且使得页面上靠前文 ...

  7. 读《深入理解Elasticsearch》点滴-查询模版(结合官网手册,版本5.1)

    1.为什么使用查询模版 让应用程序开发者只需要把查询传递给elasticsearch,而不需要考虑查询语句的构造.查询DSL语法.查询结果过滤等细节知识. 2.使用版本5.1,查询模版在5.6中发生变 ...

  8. 读《深入理解Elasticsearch》点滴-查询评分

    计算文档得分的因子: 文档权重(document boost):索引期赋予某个文档的权重值 字段权重(field boost):查询期赋予某个文档的权重值 协调因子(coord):基于文档中词项个数的 ...

  9. 读《深入理解Elasticsearch》点滴-基础概念

    Lucene的概念 document:以json的形式体现,搜索和搜索的主要载体 field:document的一个部分 term(词项):代表文本中的一个词 token(词条):term在field ...

随机推荐

  1. 王某人从0开始学习lorawan的笔记_1:最底层!IO驱动层,Gpio_t类

    本来想介绍SX1276(与SX1278的操作完全相同,只是需要处理频段)的,但是这款芯片内容还是很丰富的,三言两语介绍不清,而且资料也很多就算了. 直接正面怼lorawan吧,怼到高地去,打爆lora ...

  2. Leetcode之深度优先搜索&回溯专题-638. 大礼包(Shopping Offers)

    Leetcode之深度优先搜索&回溯专题-638. 大礼包(Shopping Offers) 深度优先搜索的解题详细介绍,点击 在LeetCode商店中, 有许多在售的物品. 然而,也有一些大 ...

  3. Reactive(2) 响应式流与制奶厂业务

    目录 再谈响应式 为什么Web后端开发的,对 Reactive 没有感觉 Java 9 支持的 Reactive Stream 范例 小结 扩展阅读 再谈响应式 在前一篇文章从Reactive编程到& ...

  4. 深入理解 Handler 消息机制

    记得很多年前的一次面试中,面试官问了这么一个问题,你在项目中一般如何实现线程切换? 他的本意应该是考察 RxJava 的使用,只是我的答案是 Handler,他也就没有再追问下去了.在早期 Andro ...

  5. CF - 1107 E Vasya and Binary String DP

    题目传送门 题解: dp[ l ][ r ][ k ] 代表的是[l, r]这段区间内, 前面有k-1个连续的和s[l]相同且连续的字符传进来的最大值. solve( l, r, k) 代表的是处理 ...

  6. CodeForces div3 第一场

    A Wrong Subtraction 题意: 对于一个数操作n次,操作如下: 如果末尾是0就将这个数除以10, 如果末尾不是0就将这个数-1, 直接做就好了. 代码: #include<bit ...

  7. PHP-02.文件上传、php保存/转移上传的文件、常见的网络传输协议、请求报文及属性、响应报文及属性

    关系数组 array("key"=>"value",...) ; get没有数据大小的限制 post上传大小没有限制 不指定上传方式,默认是get 文件上 ...

  8. .NET 分布式自增Id组件(解决自动分配机器Id、时间回拨问题)

    目录 简介 产生背景 使用方式 原始版 完美版 测试 结尾 简介 IdHelper是一个.NET(支持.NET45+或.NET Standard2+)生成分布式趋势自增Id组件,有两个版本:原始版为基 ...

  9. Java web 修改默认web部署路径

    转载自:https://blog.csdn.net/lcczpp/article/details/79968070 在eclipse上面部署web项目后,它没有将你的项目文件放到tomcat 的目录下 ...

  10. laravel模板布局

    在实际的开发中,我们会遇到许多重复页面的部分,这些页面的重复会让我们的代码看起来非常冗余 所以我们要进行页面的布局规划.思路:将页面中的公有部分取出来作为单独的页面,其他继承公共模板 在公共模板的基础 ...