全文检索4.5查询语法

简介: 全文检索4.5查询语法

 

语法概要

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 , ornot  ( ) 组成布尔查询。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的类型不必完全相同。

目录
相关文章
|
2月前
|
NoSQL 数据可视化 安全
如何开发一套车辆管理系统?(附架构图+流程图+代码参考)
本文介绍了如何通过搭建车辆管理系统(VMS)帮助企业摆脱传统管理方式,实现流程化、可视化、合规化和自动化。内容涵盖系统架构、关键功能模块、数据模型、API设计、前后端实现及实施建议,提供可落地的技术方案,助力企业降低隐形成本、提升管理效率与透明度,实现数据驱动决策。
|
安全 Android开发 iOS开发
Android vs iOS:深入剖析两大移动操作系统的优劣与未来趋势####
【10月更文挑战第21天】 本文旨在通过技术视角,全面对比分析Android与iOS两大主流移动操作系统的架构差异、用户体验、安全性及生态系统等方面,探讨其各自优势与不足,并预测未来发展趋势。 ####
1260 1
|
4月前
|
Python
Excel中如何批量重命名工作表与将每个工作表导出到单独Excel文件
本文介绍了如何在Excel中使用VBA批量重命名工作表、根据单元格内容修改颜色,以及将工作表导出为独立文件的方法。同时提供了Python实现导出工作表的代码示例,适用于自动化处理Excel文档。
|
存储 Serverless 文件存储
函数计算产品使用问题之如何在一键部署的ComfyUI中上传大模型和插件
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
《揭开DeepSeek神秘面纱:复杂逻辑推理背后的技术机制》
DeepSeek是一款基于Transformer架构的大语言模型,以其在复杂逻辑推理任务上的卓越表现成为行业焦点。它通过自注意力机制高效捕捉长距离依赖关系,结合强化学习优化推理策略,利用思维链技术拆解复杂问题,并经过多阶段训练与精调提升推理能力。此外,DeepSeek融合知识图谱和外部知识,拓宽推理边界,使其在处理专业领域问题时更加准确和全面。这些先进技术使DeepSeek能够像人类一样思考和推理,为解决复杂问题提供强大支持。
797 11
|
11月前
|
运维 监控 安全
代理IP故障排查技巧汇总及实战经验分享
在信息化时代,互联网不可或缺。使用HTTP动态代理IP时,快速排查故障至关重要。主要步骤包括:1. 检查代理IP有效性(Ping测试、HTTP请求测试);2. 监控连接速度(延迟和带宽测试);3. 分析错误信息(HTTP状态码、日志);4. 检查代理设置(配置文件、协议支持);5. 使用调试工具(Wireshark、浏览器开发者工具);6. 咨询服务提供商;7. 检查网络环境(防火墙、ISP限制);8. 逐步排查并记录变化。这些技巧能有效找出并解决问题。
773 10
|
JavaScript
Vue2通知提醒框(Notification)
这篇文章介绍了如何在Vue 3框架中创建一个通知提醒框(Notification)组件,支持自定义延时关闭、弹出位置和五种不同样式的消息提示。
551 1
Vue2通知提醒框(Notification)
|
数据采集 监控 数据挖掘
拼多多商品评价API的获取与应用
在数字化商业时代,拼多多商品评价API为开发者和企业提供深入理解消费者反馈、优化产品策略及提升用户体验的重要途径。本文详述了该API的获取方法及其在电商平台运营优化、品牌商市场调研与产品改进、数据分析与市场洞察等领域的广泛应用,强调了遵守使用规范、数据质量处理及性能优化的重要性。
867 0
|
Ubuntu JavaScript Linux
linux 命令行下载BT种子和磁力链接 ubuntu linux 命令行下载种子
linux 命令行下载BT种子和磁力链接 ubuntu linux 命令行下载种子
3668 3
|
Java
Centos7.9的ip更改--详细版
Centos7.9的ip更改--详细版
2495 4