42.query string分词

主要知识点:

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小节中对搜索结果的讲解

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

}

]

}

原文地址:https://www.cnblogs.com/liuqianli/p/8469802.html

时间: 2024-10-05 16:36:20

42.query string分词的相关文章

37.query string、_all metadata

主要知识点 1.query string基础语法 2._all metadata的理解 一.query string基础语法 1.GET /test_index/test_type/_search?q=test_field:test 查询test_field这个field(字段)中包含关键字test的所有数据. 2.GET /test_index/test_type/_search?q=+test_field:test "+"的意思就是必须包含后面的关键字test,其实加不加这个&qu

Query String模块

一.对象方法 querystring.parse(str[, sep[, eq[, options]]]) //将一个 query string 反序列化为一个对象.可以选择是否覆盖默认的分割符('&')和分配符('='). querystring.stringify(obj[, sep[, eq[, options]]]) //序列化一个对象到一个 query string.可以选择是否覆盖默认的分割符('&')和分配符('=').

node.js学习第六天--Query String

1.字符串转换 Query String模块的基本介绍 Query String模块用于实现URL参数字符串与参数对象之间的互相转换,提供了“stringify”.“parse”等一些实用函数来针对字符串进行处理,通过序列化和反序列化,来更好的应对实际开发中的条件需求,对于逻辑的处理也提供了很好的帮助,下面就让我们一起来了解学习它吧! 2.序列化 stringify函数的基本用法 stringify函数的作用就是序列化对象,也就是说将对象类型转换成一个字符串类型(默认的分割符(“&”)和分配符(

Javascript Query String Parsing

1. URL encoding 为什么要进行URL encoding?这是因为,有些字符是不能成为URL一部分的,举个例子,比如空格符.另外,有些有特殊含义的保留字符,比如#,作为HTML锚点,用于定位到HTML文档的某个位置上:=符号在URL里用于分割URL参数的key和value. URL encoding依据以下规则: 字母(A–Z 以及 a–z),数字(0-9)以及'.','-','~'和'_'这些字符不进行编码 空格符要编码成+或者"%20" 所有其他的字符,要被编码成%HH

URL query string中文字符问题

如果URL的query string中包含中文字符,在不做特殊处理的情况下通过 request.getParameter 方法是获取不到正确的信息的,这是由于下面的两个机制造成的 浏览器会自动对URL中的特殊字符进行编码,比如请求 localhost:8080/TestJSp/loginMiddle.jsp?name=测试,真正请求的URL是localhost:8080/TestJSp/loginMiddle.jsp?name=%E6%B5%8B%E8%AF%95,即浏览器自动对中文进行了基于U

query string parameters 、 Form Data 、 Request Payload

微信小程序ajax向后台传递参数的时候总是报400错误 然后看了一下network 发现是query string parameters,但是我写的header如下 header:{ "Content-Type":'json' } 所以小程序总是报400 未完待续.... 附对照表 待完善 header:{ "Content-type":'json' }  Request Payload header:{ "Content-type":'x-ww

使用Retrofit时出现 java.lang.IllegalArgumentException: URL query string &quot;t={type}&amp;p={page}&amp;size={count}&quot; must not have replace block. For dynamic query parameters use @Query.异常原因

/** * Created by leo on 16/4/30. */ public interface GanchaiService { @GET("digest?t={type}&p={page}&size={count}") Call<List<GanChaiEntry>> ListGanchaiEntry(@Path("type") int type , @Path("count") int cou

How to get the query string by javascript?

1.html: <a href="2.html?name=geovindu&sex=woman&age=12">test getQueryString</a> 2.html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

在js中获取query string 以及重写URL的函数

函数用途:如标题,1. 从URL中解析出参数,2.重写URL中的参数值 如下代码所示,包含了测试.可以直接copy到浏览器中,输入测试地址:localhost:xxx?a=1&b=2&c=3 ,在console中运行查看结果: // - test // - get from current location var url = document.location.href; // - extract param from url console.log(getUrlParam(url,&q