全文索引查询

本节介绍全文索引谓词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语句中双引号需用转义符;

暂不支持以下特殊字符查询,将提示语法错误:"\ "、"+"、"-"、"!"、"("、")"、":"、"^"、"["、"]"、"{"、"}"、"~"、"*"、"?"、"||"、"&&"、"""。