etx_GetHilite() 函数

etx_GetHilite() 函数返回线索在文档中的位置。

语法

etx_GetHilite (document, hilite_info)

元素 用途 数据类型
文档 表中列的名称,该列包含要突出显示其信息的文档 BLOB、CLOB、 LVARCHAR、CHAR、 VARCHAR、 IfxMRData 或 IfxDocDesc 之一
hilite_info 指定给 etx_contains() 运算符的语句局部变量(SLV)的名称,该运算符返回内部突出显示信息 etx_ReturnType

返回类型

etx_GetHilite() 函数返回 etx_HiliteType,这是由 GBase 8s Excalibur Text Search DataBlade 模块定义的指定行数据类型。

只有在创建 etx 索引之前指定了 FILTER="STOP_ON_ERROR" FILTER="CONTINUE_ON_ERROR"etx_GetHilite() 函数才会在具有 etx_HiliteType 值的 viewer_doc 字段中返回已过滤的文档。

如果先前创建 etx 索引时没有进行过滤,而您对包含专用格式信息的文档(如 Microsoft® Word 文档)执行了 etx_GetHilite() 函数,那么 viewer_doc 字段将以其原始格式包含未过滤的文档。vec_offset 字段包含相对于未过滤文档的偏移值,可能包含额外的非文本字符。要避免对二进制数据建立索引(在 etx 搜索中无用),需要在对文档建立索引之前对其进行过滤。

有关 etx_HiliteType 行数据类型的更多信息,请参阅 etx_HiliteType 数据类型

用法

etx_GetHilite() 函数用于返回线索在文档或搜索文本中的位置。这称为突出显示。

仅可以在查询的 SELECT 列表中使用 etx_GetHilite() 函数。它有两个必需参数。第一个参数是包含要突出显示的文档的列的名称。第二个参数是为执行搜索的 etx_contains() 运算符指定的 SLV 的名称。

etx_GetHilite() 没有将要突出显示的线索或搜索字符串作为输入。函数把作为突出显示字符串的线索指定为 etx_contains() 函数的第二个参数。

etx_GetHilite() 函数通过行数据类型 etx_HiliteType 返回突出显示信息。该行数据类型由分别包含突出显示信息两部分内容的两个字段组成:vec_offsetviewer_doc

vec_offset 字段包含线索在文档中所处位置的偏移信息,信息格式为有序的整数对。整数对中的整数以空格相隔。整数对中的第一个整数描述线索实例在文档中的偏移量,第二个整数描述突出显示的长度。假设文档中第一个字符的偏移量为 0。viewer_doc 字段包含文本文档本身。

要查看 etx_HiliteType 对象中所含的突出显示的文本,请将 etx_GetHilite() 函数与可以操作 etx_HiliteType 数据的函数一起使用。请参阅 etx_ViewHilite() 例程,获取示例。

也可以使用标准 GBase 8s ESQL/C 例程(如 ifx_lo_open()ifx_lo_read())或 DataBlade API 大对象例程(如 mi_lo_open()mi_lo_read())来操作 etx_HiliteType 对象。请参阅 GBase 8s ESQL/C 程序员操作手册GBase 8s DataBlade API 程序员指南,以获取有关这些例程的信息。
重要: 如果在返回多行的查询中使用 etx_GetHilite() 函数,那么该函数会针对每行执行一次。这就意味着每一行都具有自己的突出显示信息,这些信息包含在由 etx_GetHilite() 函数返回的 etx_HiliteType 行数据类型中。 该突出显示信息仅适合于该行中包含的文档,而不适合于其他文档。
重要: 如果使用 etx_GetHilite() 例程来突出显示词组搜索的结果,那么将突出显示线索中每个词的所有实例,而不是仅仅显示整个词组的实例。通过设置调整参数 SEARCH_TYPE = PHRASE_EXACTSEARCH_TYPE = PHRASE_APPROX 执行词组搜索。

例如,如果针对线索 walk the dog 执行词组搜索,并使用 etx_GetHilite() 例程突出显示结果,那么将在生成的文档中突出显示词 walk dog(以及 the,如果非索引字有意义的话)的所有实例,即使这些实例之间并无近似性。

示例

以下示例显示 etx_GetHilite() 函数的简单用法:
SELECT etx_GetHilite (description, rc) FROM videos
    WHERE etx_contains(description, 
    'multimedia',  rc # etx_ReturnType);

函数 etx_GetHilite() 针对 description 列执行,即 etx_contains() 运算符搜索的同一列。在 etx_contains() 运算符中声明的 SLV rc 将作为第二个参数传递给 etx_GetHilite() 函数。 要突出显示的字符串是 etx_contains() 运算符的线索 multimedia