主要知识点:

1、queery string 分词

2、38节中搜索结果解析

3,测试分词器

 
 

query string分词

query string必须以和index建立时相同的analyzer进行分词

query string对exact value和full text的区别对待

比如我们有一个document,其中有一个field,包含的value是:hello you and me,建立倒排索引。

我们要搜索这个document对应的index,搜索文本是hell me,这个搜索文本就是query string,默认情况下,es会使用它对应的field建立倒排索引时相同的分词器去进行分词和normalization,只有这样,才能实现正确的搜索。

比如,我们建立倒排索引的时候,将dogs --> dog,结果你搜索的时候,还是一个dogs,那不就搜索不到了吗?所以搜索的时候,那个dogs也必须变成dog才行。才能搜索到,所以必须是相同的分词器。不同类型的field,可能有的就是full text,有的就是exact value。

 
 

二、38小节中对搜索结果的讲解

  • GET /website/article/_search?q=2017                         3条结果
  • GET /website/article/_search?q=2017-01-01          3条结果
  • GET /website/article/_search?q=post_date:2017-01-01         1条结果
  • GET /website/article/_search?q=post_date:2017         1条结果

 
 

1、GET /_search?q=2017

搜索的是_all field,document所有的field都会拼接成一个大串,进行分词,其中2017-01-02会进行分词成2017、01、02,所以用_all 搜索2017时能把三个docuemnt都搜索出来。

 
 

2、GET /_search?q=2017-01-01

同样道理,query string会用跟建立倒排索引一样的分词器去进行分词(会把2017-01-01 分成2017、01),再进行搜索时,3个文档都有2017,所以会是三个结果。

 
 

3、GET /_search?q=post_date:2017-01-01

 
 

搜索特定的field,post_date,会作为exact value去建立索引,2017-01-01没有被分词,只有doc1中才有2017-01-01,所以只有一个结果

 
 

4、GET /_search?q=post_date:2017

这是es 5.2以后所做的一个优化,具体原理以后会学到。

 
 

三、测试分词器

 
 

GET /_analyze

{

"analyzer": "standard",

"text": "Text to analyze"

}

执行结果是:

{

"tokens": [

{

"token": "text",

"start_offset": 0,

"end_offset": 4,

"type": "<ALPHANUM>",

"position": 0

},

{

"token": "to",

"start_offset": 5,

"end_offset": 7,

"type": "<ALPHANUM>",

"position": 1

},

{

"token": "analyze",

"start_offset": 8,

"end_offset": 15,

"type": "<ALPHANUM>",

"position": 2

}

]

}

 
 

 
 

42.query string分词的更多相关文章

  1. 37.query string、_all metadata

    主要知识点 1.query string基础语法 2._all metadata的理解     一.query string基础语法 1.GET /test_index/test_type/_sear ...

  2. Elasticsearch由浅入深(七)搜索引擎:_search含义、_multi-index搜索模式、分页搜索以及深分页性能问题、query string search语法以及_all metadata原理

    _search含义 _search查询返回结果数据含义分析 GET _search { , "timed_out": false, "_shards": { , ...

  3. How to get the query string by javascript?

    http://techfunda.com/Tools/XmlToJson http://beautifytools.com/xml-to-json-converter.php https://www. ...

  4. nodejs笔记三--url处理、Query String;

    URL--该模块包含用以 URL 解析的实用函数. 使用 require('url') 来调用该模块. 一.parse函数的基础用法 parse函数的作用是解析url,返回一个json格式的数组,请看 ...

  5. <原>ASP.NET 学习笔记之HTML helper中参数何时会是路由参数,何时又会是query string?

    HTML helper中参数何时会是路由参数,何时又会是query string?   @Html.ActionLink("Edit", "Edit", new ...

  6. query string parameters 、 Form Data 、 Request Payload

    微信小程序ajax向后台传递参数的时候总是报400错误 然后看了一下network 发现是query string parameters,但是我写的header如下 header:{ "Co ...

  7. springMVC接收参数的区别form data与query string parameters与request payload

    在AJAX请求中,我见过有三种form表单数据类型提交. 第一种:form data, 第二种:query string parameters,第三种:request payload. 在google ...

  8. http 请求参数之Query String Parameters、Form Data、Request Payload

    Query String Parameters 当发起一次GET请求时,参数会以url string的形式进行传递.即?后的字符串则为其请求参数,并以&作为分隔符. 如下http请求报文头: ...

  9. asp.net query string 及 form data 遇到的编码问题

    当遇到此问题时,脑海里闪过的第一个解决方案是设置 web.config 的编码.但一想,就某一个页面的需求而导致其他跟着妥协,不是好的解决方案.于是网上搜索答案,下面做个小分享,遗憾的是研究不够深入, ...

随机推荐

  1. 使用jQuery.makeArray() 将多种类型转换成JS原生Array

    jQuery.makeArray(obj)这个函数从名字上来看非常easy猜出它的用途:应该是用来将传入的对象转换成一个原生array 再看看官网上对它的解释:Convert an array-lik ...

  2. Codeforces Round #330 (Div. 2) D. Max and Bike 二分

    D. Max and Bike For months Maxim has been coming to work on his favorite bicycle. And quite recently ...

  3. jQery总结01

    1 jQuery 的基本语法结构是什么? 2 $(document).ready() 与 window.onload 有什么区别? 3 如何实现 DOM 对象和 jQuery对象间的转化?

  4. 【POJ 2442】 Sequence

    [题目链接] http://poj.org/problem?id=2442 [算法] 堆 [代码] #include <algorithm> #include <bitset> ...

  5. [python基础] Flasky-表单WTForms支持的html字段和内建函数

    WTForms 支持的HTML 标准字段如表4-1 所示.表4-1 WTForms支持的HTML标准字段字段类型              说 明StringField           文本字段T ...

  6. PCB C# 连接MongoDB 数据库

    一.C# MongoDB 驱动下载 1.百度网盘:nuget下载地址(V2.7版本) https://pan.baidu.com/s/1VDsVcH1TMrXqhRCZVewZgA 2.VS 中NUg ...

  7. AMD 与 CMD 区别

    作者:玉伯链接:https://www.zhihu.com/question/20351507/answer/14859415来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出 ...

  8. 2015 多校赛 第七场 1011 (hdu 5379)

    题意:给定一棵树,树上有 n 个节点.问有多少种方案,使得在每个节点上依次放置数 1~n 后,每个节点的儿子节点上的数连续(比如 1 为根,有1-2,1-3,1-4,则令2,3,4上的数连续),每个子 ...

  9. 9 在C#控制台程序(console)中让用户输入

    经过前面那些练习,我们已经熟悉录入一些简单的代码.这些代码可以进行一些简单的运算,在dos窗口打印出一些东西出来.我们现在要开始学习如何把数据从外部输入到我们的程序中. 其实大多数程序的工作是完成下面 ...

  10. 数据连接类 这里采用mysql

    数据库通用操作类,自己参照几个通用类改写的,用起来还是蛮不错....  这里用的mysql 要是其他数据库自行更改下就好 public class MySqlHelper { public stati ...