首页 > 编程知识 正文

心电图室常用查询对照表,数据库常用查询语句

时间:2023-05-03 18:03:18 阅读:178605 作者:3529

1.1对es查询概要文本的查询分为两种:

1 .基于词条的查询(Term-basedQueries ) ) ) )。

像term和fuzzy这样的查询是不包含分析阶段的低级查询,使用单个词条进行操作。 对词条Foo的term查询在倒排索引中查找词条的准确匹配项,并在TF/IDF中为包含该词条的每个文档计算相关_score。

2 .全文检索

像match和query_string这样的查询是可以理解字段映射的高级查询。

1 .使用它们查询date或integer字段时,查询字符串将分别被视为日期或整数。

2 .查询精确值(not_analyzed )字符串字段时,查询字符串将被视为单独的词条。

3 .搜索全文字段(analyzed )时,搜索字符串会首先传递到相应的解析器,并提供需要搜索的词条列表。 它们使用词条列表中的每个单词执行相应的低级查询,然后将结果合并,最终为每个文档生成相关分数。

3 .全文检索流程

1 .提交查询搜索词

2 .使用分词器对搜索词进行分词

3 .用分割后的词条对索引中的文档进行逆向排序,

4 .对检索到的文档进行关联度计算(文档频率、词条频率、字段长度等考虑因素),并进行评分

5 .最后对结果进行排序并响应输出。

6.2 es常用查询1.tremQuery:完全匹配,即不进行分词器分析,意味着文档中必须包含整个搜索的词汇,不经过分析,可以理解为准确的低级查询。

1 .假设name字段设置not_analyzed:为索引库name字段赋值。 我是张三李四二; 此时,索引库存储(not_analyzed,无分词)是一体的。 【我是张三李四二】

EU.querybyterm(indexname,indexType,' name ','我是张三李四二');

用term查的话,name的值必须是“我是张三李四二”,即使有一个单词也找不到。 因为索引库中保存着【我是张三李四二】,所以检索的时候必须用这个完整的值进行检索,才能与检索一致。

2 .假设将name字段设置为analyzed:并为索引库name字段赋值。 我是张三李四二;

这时索引存储库存储(analyzed,standard分词)的是【我,是,张,三,李,四,二】

EU.querybyterm(indexname,indexType,' name ','我');

//此时,必须用【我是张三李四二】中的任何一个单独词查才能得出结果。 就算大于一个词的组合,也不会有数据。 因为索引经过分词存放在一个个单独的词【我、好、张、三、李、四、二】里,所以查不到。

使用条件:请在not_analyzed字段中查询正确的值。

2.matchQuery :使用某个字段的值搜索文档; 类似于查询和' BMW什么马力',如果查询匹配,则分词《宝马,多少,马力》将搜索包含这三个词中的一个或多个的所有文档。

一种高级查询,主要用于全文搜索,知道如何处理全文搜索字段(full-text,analyzed )和精确值字段(exact-value,not_analyzed )。

Match示例:

首先,创建新索引,然后使用bulkAPI对几个文档进行索引。

PUT /my_index

{ ' settings ' 3360 { ' number _ of _ shards ' : }

POST/my_index/my_type/_bulk

{ 'index':{ '_id': 1 }}

{ ' title ' : ' thequickbrownfox ' }

{ 'index':{ '_id': 2 }}

{ 'title':'The quick brown

fox jumps over the lazy dog" }

{ "index":{ "_id": 3 }}

{ "title":"The quick brown fox jumps over the quick dog" }

{ "index":{ "_id": 4 }}

{ "title": "Brown fox browndog" }

使用match查询在一个全文字段中搜索一个单词:如下

GET/my_index/my_type/_search

{

    "query": {

        "match": {

            "title": "QUICK!"

        }

    }

}

ES会按照如下的方式执行上面的match查询:

1.    检查字段类型

Title字段是一个全文字符串字段(analyezed),额查询字符串也需要被解析。

2.    解析查询字符串

查询字符串“QUICK”会被传入到标准解析器中,得到的结果是单一词条“quick”。因为我们得到的只有一个词条,match查询会使用一个term低级查询来执行查询。

3.    找到匹配的文档

Term查询会在倒排索引中查询“quick”,然后获取到含有该词条的文档列表,在这个例子中,文档1,2,3会被返回。

4.     对每份文档打分

Term查询会为每份匹配的文档计算其相关度分值_score,该分值通过综合考虑词条频度(“quick”在匹配的每份文档的titile字段中出现的频繁程度)、倒排频度(“quick”在整个索引中的所有文档的title字段中的出现程度),以及每个字段的长度(较短的字段会被认为相关度更高)来得到。

"hits": [ {     "_id":      "1",     "_score":   0.5,     "_source": {        "title": "The quick brown fox"     } }, {     "_id":      "3",     "_score":   0.44194174,     "_source": {        "title": "The quick brown fox jumps over the quick dog"     } }, {     "_id":      "2",     "_score":   0.3125,     "_source": {        "title": "The quick brown fox jumps over the lazy dog"     } }

]

文档1最相关,因为它的title字段短,意味着quick在它所表达的内容中占比较大。文档3比文档2的相关度更高,因为quick出现了两次。

参考网址:http://blog.csdn.net/dm_vincent/article/details/41693125

http://www.cnblogs.com/yjf512/p/4897294.html

 

3 .  matchAllQuery:用于匹配文档中的所有字段;相当于select * from语句;

4 .  MultiMatchQuery:针对多个字段进行搜索。

5.      WildcardQuery:检索指定字段中含有通配符的查询词。

6.      QueryString:使用查询解析器构造实际的查询。如querystring(“+中国-日本”)

7.      Morelikethis:查询与这个id对应文档相似的文档。

未完待续。。。。。。。。。

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。