全文索引查询¶
本节介绍全文索引谓词CONTAINS执行的各类查询条件。
布尔查询
神通数据库全文索引功CONTAINS查询条件中的查询项可进行布尔操作,快速实现查询结果集的布尔操作。操作符包括AND、OR和NOT,它们必须全部大写;AND、OR、NOT分别可以用&&、||和!代替。AND亦可简写为"+",NOT可简写为"-"。如果两个查询项之间没有布尔操作符时,默认为AND。
注解
布尔表达式的连接顺序必须用括号"("和")"表示,否则查询结果会有错;
NOT只有(A) NOT (B)一种用法:先搜索包含(A)的文档,然后从中删去包含(B)的文档,不论(A) AND NOT (B)、NOT(B) AND (A)还是 (A) OR NOT (B)、NOT(B) OR (A)都解析为(A) NOT (B);
NOT操作符不能只和一个查询项使用,如NOT(A)不会返回任何结果。
表233详细语法与简写语法的对比
| 序号 | 详细语法 | 简写语法 |
|---|---|---|
| 1 | 美国 AND 中国 | +美国 +中国 |
| 2 | 美国 OR 中国、美国中国 | 美国中国 |
| 3 | 美国 AND NOT 中国 | +美国 -中国 |
| 4 | 美国 OR 中国 AND NOT 波音公司 | 美国 +中国-波音公司 |
| 5 | 中国 AND NOT 波音公司 OR 美国 | +中国-波音公司美国 |
| 6 | 美国OR (中国 AND NOT 波音公司) | 美国 (+中国-波音公司) |
| 7 | (美国 OR 中国) AND NOT 波音公司 | +(美国中国) 波音公司 |
通配符查询
神通数据库全文索引功能支持"*"和"?"作为查询中的通配符。"?"表示单个任意字符;"*"表示任意个字符。通配符可位于查询词的中间和最后,但不能位于查询词最前面,否则提示语法错误。例如:查询"郭*",则"郭沫若"和"郭子仪"都会搜索出来。
相似度查询
神通数据库全文索引功能可以设置检索时匹配项的相似度,实现有目的有着重点的检索。方法是:在查询项最后加上符号"^"并紧接一个数字(增量值),表示搜索时的相似度。增量值越高,搜索到的项相关度越好。增量值不能设置为负数,否则会提示语法错误。
例如:搜索"中国美国",想让"中国"的相关度更好,查询条件"中国^4 美国"将实现此目的。同时支持对短语进行相似度查询,如 "\"美国 中国\"^4 中华人民共和国",其中。"\"美国 中国\""为短语,"\"为数据库转义字符。
模糊查询
神通数据库全文索引功能支持基于Levenshtein Distance与Edit Distance算法的模糊搜索。模糊搜索只需项后加上符号"~"。但是,"~"不能位于查询词最前面,否则提示语法错误。使用模糊查询自动得到匹配度(增量因子)为0.5的搜索结果。改变模糊查询的匹配度,可以在"~"后加上一个增量值,增量值的范围必须是[0,1),若大于1会提示语法错误,若小于0会转换成模糊查询("~")与NOT("-"),得到错误结果。例如搜索拼写类似于"roam"的项,"roam~"搜索将会检索到形如foam和roams等单词。
邻近查询
神通数据库全文索引功能支持查找相隔一定距离的词。使用邻近搜索需要在包含查找相隔的词的短语最后加上符号"~" 。例如在文档中搜索相隔少于10个词的"中华人民共和国"和"中国",可以这样写:"\"中华人民共和国 中国\"~10"。
范围查询
神通数据库全文索引功能可对日期和文本进行初级范围查询,格式为:[begin TO end]或{begin TO end},分别表示闭区间和开区间的范围查询。范围查询起始词begin和end不能含空格,且TO必须大写,否则提示语法错误。例如查询"[20040712 TO 20050101]","20041212"被查询出来而"20061212"不会。
注解
短语通过双引号将词括起来,在SQL语句中双引号需用转义符;
暂不支持以下特殊字符查询,将提示语法错误:"\ "、"+"、"-"、"!"、"("、")"、":"、"^"、"["、"]"、"{"、"}"、"~"、"*"、"?"、"||"、"&&"、"""。