一 语法概要

select域名, 域名@Seg from 索引库名称 where 域名:域值 order by 域名(整型、浮点、日期、排序文本类型、枚举类型)limit n classify by 域名 (或 merge by 域名)

l select的域必须是存储域或枚举域。域名后加上@Seg, 表示取包含查询词的片断,可能包含多个片断,用...分隔,域必须为文本类型。

l where条件域必须是索引域或枚举域。

l order by的域必须存储或是枚举域,类型可以是整型(包括大整数类型)、浮点(包含单精度浮点数和双精度浮点数)、日期型域,或是排序文本类型(文本域加上排序属性),而不能是文本域。

l limit 是可选项,可取前n条数据,否则返回所有的数据。

l classify by 的域必须包含SameContent属性,可将相识的文档合并。

l merge by的域必须是整型,将具有相同数值的文档合并。

l where的基本语法为域名:域值,支持and , or,not 和 ( ) 组成布尔查询。and 可以用 '&' 或空格代替,or 可以用 '|' 代替, not 可以用 '!' 代替。

域名@Spell: 域值 表示拼音查询,域值应为汉字,不是拼音。

域名@Syn: 域值 表示同义查询,查询所有和域值同义的词。

域名@SplitAnd: 域值 表示将域值分词后,再进行and查询。

域名@SplitOr: 域值 表示将域值分词后,再进行or查询。

二 详细语法

1 转义字符

\ + - ! ( ) : ^ [ ] { } " ~ * ? | &

这些符号在查询语法中有特殊意义,如果要查询符号本身,需要在前面加'\'。

注意:双引号内除'"'和'\'外不用转义。如'"c:\\dir"'而不是'"c\:\\dir"'。

例如:

查询'*'可输入'\*'。

查找路径为'c:\dir\1.txt'的文件可输入'FounderFTSKey:c\:\\dir\\1.txt'。

(更方便的方式是'FounderFTSKey:"c:\\dir\\1.txt"')。

查询'int_field:-1'可输入'int_field:\-1'。

2 布尔查询

2.1 连接符:

'A B' 或 'A and B' : A和B必须都出现。

'A or B' : A或B出现。

and优先级高于or。

2.2 修饰符

修饰符优先级高于连接符。

'!A' 'not A' : A不能出现。如'not A and B'(相当于(not A) and B)。

3 短语查询

引号内的内容在源文件中必须是连续的短语。如'A B C'查询所有包含单词A,B,C

的文件,而'"ABC"'查询所有包含短语"ABC"的文件。

注意:引号内可以有引号("),需要用转义符(\)转义。如引号内的'\\'表示'\'。

3.1 临近查询

短语查询后加'~数字'表示此短语中各单词不一定相邻,各单词之间间隔距离总和不超过此数字。(距离按字计算,一个汉字和英文字母都算1个字)

例如,对于查询'"A B C"~10',原文中出现'A B X C','A X B X C'都满足条件。

再如:

假设临近查询条件为:"abcdefg"~4,并假设ab是一个词,ef是一个词,其它都是单字词。临近查询的含义是:文章中包含ab c d ef g这五个词,并且是按这样的先后顺序,并且这五个词之间最多可以包含4个字的其它的字符。
例如:abMcdefg, abMcNdefg,abMcNdPefQg都是满足条件的。(M、N、P、Q都是单字) aMbcdefg是不满足条件的,因为这个串里没有ab这个词。

3.2 指定分隔的临近查询

临近查询中可指定分隔点(用**表示),而不按照分词的结果进行分隔,如查询'abc'和'defg'相邻,可指定查询条件为 'abc**defg' , 表示查询到'abc' 和 'defg' ,并且相邻的距离不超过10个。这种查询不能指定分隔距离,固定为10。

4 模糊查询

单词后加'~'查询与此单词拼写相近的单词。

只要一个串跟检索串的编辑距离小于这两者中短串长度的一半,就算匹配。
编辑距离是指:两个字符串(以utf16表示)之间,由一个转成另一个所需的最少操作次数,许可的操作包括插入一个字符、删除一个字符、改变一个字符。

例如,'computer~'可查到'computer'和'compute'。'international~'可查到'

'international'和'internationale'。

5 通配符查询

单词中'*'匹配一个或多个字符,'?'匹配一个字符。只有字符串类型支持通配符检索。

注意:通配符如果用于第一个字符(如'*ed'),是相当耗时的。

6 范围查询

对数字和日期类型可进行范围查询。语法为

{'['|'{'}下限,上限{']'|'}'}

[/]表示包含边界元素,{/}表示不包含边界元素。

例如:

[-1,1] -> -1,0,1

{-1,1} -> 0

{-1,1] -> 0,1

[-1,1} -> -1,0

null表示最小/最大的元素。

例如:

[null,null] -> 任何日期/数字

[null,1.0}  -> 小于1.0的数字

[20040101,null] -> 2004年1月1日及以后的日期

只有整型、浮点型、日期型的数据支持范围检索,其它不支持。闭区间用[],开区间用{}。

注意:范围查询不支持枚举类型。

7 指定索引域

语法为:

索引域:查询

例如:

date:[20050101,20060101}

注意:查询同音词时,域名后加'@Spell',同音词后加'@Syn',上位词加'@ Brd ',下位词加' @Nrw '。如果需要对分词字段作不切分检索(即对这个字段作完全匹配,建索引时需要设置这个字段的IndexWhole属性),在域名后加'@NoSplit'。域名@SplitAnd: 域值 表示将域值分词后,再进行and查询。域名@SplitOr: 域值 表示将域值分词后,再进行or查询。

8 括号

可以用括号组合查询。

例如:

date:([20040101,20050101] or 20060101)

9 指定权重

在查询项之后用'^数字'指定权重。

例如:

A^4 B

表示在对查询结果排序中,A的影响力是B的4倍。

10 日期型语法

日期型检索语法的表示为:YYYYMMDDhhmmss

例如查询日期为2008年1月1日的语法是(假设日期型数据对应的域名是date)

date:20080101

查询日期为2006年12月12日9点59分的语法是date:200612120959

11 Group by查询语法

Select f1, count(*), count(distinct f2) from index_lib where f3:value group by f1

其中,聚合函数必须是count,count里可以是某个字段名或是*,用于统计每个分组的记录数(不去除重复记录);也可以是distinct加字段名,用以统计每一分组中这个字段的域值的出现次数。

12 Classify by查询语法

Select f1 from index_lib where f3:value classify by f1

classify by 的域f1必须包含SameContent属性,可将相识的文档合并,所有的相似文档只作为一条结果返回。

13 Merge by查询语法

Select f1 from index_lib where f3:value merge by f1

merge by 的域f1必须为整型,可将具有相同值的文档合并,所有相同值的文档只作为一条结果返回,同时返回相同值在索引库中的数量。

三 跨库检索语法

select f11, f21 from lib1 where f31:value union select f12, f22 from lib2 where f32:value order by f11, f21  (说明:不同库中域名不同,或者对不同库的where检索条件各不相同,使用此Union语法)

select f1, f2 from lib1,lib2 where f3:value (说明:域名完全相同,检索条件完全一致的库可使用此简化语法)

每个子句select部分的域个数必须相同。整个语句的order by部分出现的域名必须在第一个子句中,按这个字段在select语句中对应位置的字段的域值来排序,因此排序时对应位置的字段类型必须相同。

例如select f11, f21 from lib1 union select f12, f22 from lib2 order by f11,用lib1中的f11和lib2中的f12来排序,f11和f12的类型必须相同,f21和f22的类型不必完全相同。

全文检索4.5查询语法相关推荐

  1. docker安装es+mac安装Kibana工具+es查询语法笔记

    一.docker安装es 1.下载镜像 docker pull elasticsearch:7.9.0 下载完后,查看镜像 docker images ​​ 2.启动镜像 docker network ...

  2. Kibana--KQL查询语法的使用

    原文网址:Kibana--KQL查询语法的使用_IT利刃出鞘的博客-CSDN博客 简介 说明         本文介绍Kinaba的KQL查询语法的使用. 官网网址 KQL语法:https://www ...

  3. 用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询...

    用PostgreSQL 做实时高效 搜索引擎 - 全文检索.模糊查询.正则查询.相似查询.ADHOC查询 作者 digoal 日期 2017-12-05 标签 PostgreSQL , 搜索引擎 , ...

  4. 2021年大数据Hive(四):Hive查询语法

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 hive查询语法 一.SELECT语句 1.语句结构 2.全表查 ...

  5. lucene查询语法,适用于ELk:kibana查询

    lucene查询语法,适用于ELk:kibana查询 Kibana在ELK中扮演着数据可视化角色,用来查询及展示数据: Elasticsearch查询采用的是luncene搜索引擎,其4过滤查询语法和 ...

  6. 数据蒋堂 | JOIN延伸 - 维度查询语法

    来源:数据蒋堂 作者:蒋步星 本文长度为1320字,建议阅读3分钟 本文为你讲解JOIN延伸之维度查询语法. 有了维度定义后,我们就可以来梳理前面讲过的简化JOIN语法了. 先定义字段维度: 维度字段 ...

  7. 味道不错的NBearLite查询语法

    最近在博客园博客程序的开发中使用了NBearLite进行数据库访问操作,然后通过NBearMapping将查询的结果映射到实体类.     NBearLite的查询语法设计得很体贴,用起来很舒服,正是 ...

  8. Mysql数据库查询语法详解

    数据库的完整查询语法 在平常的工作中经常需要与数据库打交道 , 虽然大多时间都是简单的查询抑或使用框架封装好的ORM的查询方法 , 但是还是要对数据库的完整查询语法做一个加深理解 数据库完整查询语法框 ...

  9. 《MongoDB管理与开发精要》——3.2节查询语法

    3.2 查询语法 MongoDB最大的特点是,它支持的查询语言非常强大,其语法类似于面向对象的查询语言,不但可以实现关系型数据库查询的大部分功能,而且还支持对数据建立索引.由于MongoDB可以支持非 ...

最新文章

  1. jittor和pytorch生成网络对比之esrgan
  2. 5.fork和vfork
  3. python网络通信框架_Python运维-Socket网络编程 (1)
  4. 3级联动 ajax java_java+ajax(三级连动下拉框)
  5. java mifare_如何正确写入MifareUltralight NFC标签?
  6. MS SQLService中的*= 及 =*
  7. 后台导出大量数据超时报 nginx404错误
  8. 中国邻苯二甲酸二环己酯(DCHP)行业市场供需与战略研究报告
  9. GPU架构(三十三)
  10. 遐想ORACLE的下步收购
  11. 资深大学老师告诉你:嵌入式、单片机开发必备软件有哪些
  12. 西柚SWPU新生赛(场外同步赛)miscAK 别的在混(
  13. NOIP2014提高组 飞扬的小鸟
  14. linux 路由配置工具下载,Linux/Openwrt路由安装配置UPNP服务提高迅雷下载速度
  15. uni-app云开发的网盘助手微信小程序源码
  16. Android实现个人中心设置界面
  17. Ps简单几步把人物图片转素描画
  18. 「SwiftUI」延迟执行代码
  19. 树莓派3b安装新系统的步骤和一些问题
  20. 3ds Max快速环境闭塞的使用

热门文章

  1. 微软、苹果把未来押注 FPGA?凭什么
  2. 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
  3. 51Nod:1085 背包问题
  4. 【移动开发】Android中强大的适配功能----Fragment(碎片)总结
  5. centos7全离线安装redis3.2.8集群
  6. 小白学python系列-(3)基础数量类型
  7. AI大事件 | OpenAI员工离职创立机器人新公司,spaCy v2.0.0发布
  8. DHCP Server 故障转移实现 (结合H3C交换机)
  9. 【点播系列之一】关于阿里视频云点播解决方案,你想知道的都在这里!
  10. 《转》推荐系统经典论文文献及业界应用