执行模糊搜索时,文本搜索引擎返回的某些行可能比其他返回行更好地满足搜索条件。要确定线索与所返回的每行之间的相似度,可以指示搜索引擎为每行分配一个值,此值称为文档分数。
文档分数的范围为 0 到 100,其中 0 表示不匹配,100 表示完全匹配。0 到 100 之间的值表示近似匹配;值越大,匹配度就越高。null 值表示未对该行进行排名。如果因为 WHERE 子句中的非 etx_contains() 运算符包含一个 OR 谓词而返回某行时,就会出现这种情况。
要访问文档分数信息,请使用语句局部变量 (SLV) 作为 etx_contains() 运算符的可选的第三个参数。SLV 的数据类型是 etx_ReturnType,这是由 GBase 8s 派生的行类型,由两个字段组成。分数信息包含在 score 字段中。
score 字段包含一个数值,用以指示返回的文档与搜索条件的相关程度(与其他建立索引的记录的分数值相比较)。文档的分数值越高,表明文档与条件的匹配度就越高。
SELECT rc.score, id, description FROM videos WHERE etx_contains(description, Row('multimedia' , 'PATTERN_TRANS & PATTERN_SUBS'), rc # etx_ReturnType) ORDER BY 1;
图: 使用 SLV 的样本文本搜索查询
SLV 的作用域限定为使用它的语句。 对于 Excalibur 文本搜索引擎来说,这是一种将有关它刚才执行的搜索的信息发送回调用它的 etx_contains() 运算符的方式。
虽然 SLV 的数据类型通常是 etx_ReturnType,但是当您将其用于 etx_contains() 运算符时,您还是必须明确指定它的类型,如上例所示。该示例还显示了如何使用 ORDER BY 子句,以指示数据库服务器按 SLV 的 score 字段对返回的行进行排名。
有关 etx_ReturnType 数据类型及其两个字段,以及如何使用这些字段中包含的信息的更多信息,请参阅 etx_ReturnType 数据类型。有关 SLV 的更常规信息,请参阅《GBase 8s SQL 指南:语法》。