全文索引谓词

CONTAINS

说明:

全文检索查询谓词。

语法:

CONTAINS(column_name, text_query VARCHAR [, label NUMBER]) RETURN NUMBER;

图例:

contains ::=

../../../../../_images/image18.jpeg

参数:

column_name

检索的文本列,该列上必须已经建立了全文索引,否则报错。

text_query

查询条件:查询项的字符串,通过空格分隔查询项;可以用大写AND、OR、NOT连接查询项,默认为AND;连接顺序必须加括号表示,否则查询结果会出错。 查询条件语法详细说明可参见:查询条件说明

label

区分各CONTAINS操作产生的score标签。

SCORE

说明:

全文检索谓词,。CONTAINS返回的匹配行与查询条件的相关度,即系统评分。0表示该行与查询条件没有匹配的词;若需要引用评分,可通过全文谓词SCORE(label)获取。

语法:

SCORE(label)

图例:

score::=

../../../../../_images/image19.png

参数:

label

识别获取评分的CONTAINS,即CONTAINS谓词的第三个参数。

示例:

简单查询

单个CONTAINS:

SELECT * FROM T_RESOURCE WHERE CONTAINS(DESCRIPTION, 'OSCAR') > 0;

复合查询

  1. 复杂条件

多个CONTAINS(两个项之间如果没有布尔操作符,默认为AND)

包含score()

其他限制条件

SECECT * FROM T_RESOURCE WHERE CONTAINS(DESCRIPTION, '中国 AND NOT 波音公司OR 美国', 1) > 0;

SECECT * FROM T_RESOURCE WHERE CONTAINS(DESCRIPTION, '中国', 1) > 0 AND CONTAINS(DESCRIPTION, '美国', 1) > 0;

SECECT score(1) FROM T_RESOURCE WHERE CONTAINS(DESCRIPTION, '中国 AND NOT 波音公司 OR 美国', 1) > 0;

SELECT T_RESOURCE.*, SCORE(1) FROM T_RESOURCE WHERE CONTAINS((DESCRIPTION, '中国', 1) > 0 order by score(1) desc;