突出显示

GBase 8s Excalibur Text Search DataBlade 模块使您能够突出显示搜索结果中出现某个线索的位置。突出显示是在搜索文本中检索每个线索实例的位置的过程。

可以在查询的 SELECT 列表中使用 etx_GetHilite() 例程,以从文本搜索中返回突出显示信息,如以下示例中所示:
SELECT etx_GetHilite (description, rc) FROM videos
    WHERE etx_contains(description, 
    'multimedia',  rc # etx_ReturnType);
该查询返回在 videos 表的 description 列中包含关键字 multimedia 的所有文档。此外,对于每个返回行,查询还返回 etx_HiliteType 值,该值包含相应文档中词 multimedia 的每个实例的位置信息。
重要: 如果在返回多行的查询中使用 etx_GetHilite() 函数,那么该函数会针对每行执行一次。这就意味着每一行都具有自己的突出显示信息,这些信息包含在由 etx_GetHilite() 函数返回的 etx_HiliteType 行数据类型中。 该突出显示信息仅适合于该行中包含的文档,而不适合于其他文档。

etx_HiliteType 行数据类型由以下两个字段组成: vec_offsetviewer_doc vec_offset 字段包含一些整数对,这些整数对描述文档中各个突出显示字符串实例的位置。viewer_doc 字段包含文本文档本身。

您可以使用 etx_HiliteDoc() 突出显示通过 etx_contains 扫描进行检索的单独文档中线索的出现次数。

etx_ViewHilite() 例程用于查看包含在 etx_HiliteType 对象中的突出显示文本。

也可以使用标准 GBase 8s ESQL/C 例程(如 ifx_lo_open()ifx_lo_read())或 DataBlade API 大对象例程(如 mi_lo_open()mi_lo_read())来操作 etx_HiliteType 对象。