突出显示

要获取突出显示信息,请在查询的 SELECT 列表中指定 etx_GetHilite() 函数。

指定 SELECT 列表,如以下示例中所示:
SELECT etx_GetHilite(abstract, rc) FROM reports
    WHERE etx_contains(abstract, 
    Row('multimedia editor', 'SEARCH_TYPE = PROX_SEARCH(5)'),
    rc # etx_ReturnType);

该示例显示了一个近似搜索,它类似于执行文本搜索查询中的搜索。除了返回文档外,该示例还显示了如何通过函数 etx_GetHilite() 返回突出显示信息。该函数的返回值的数据类型是 etx_HiliteType,这是由 GBase 8s 派生的行数据类型,包含两个用于包含突出显示信息的字段:vec_offsetviewer_doc

vec_offset 字段包含返回文档中词 multimediaeditor 的每个实例的偏移量信息,只要这两个词之间的词个数不超过 5 个。viewer_doc 字段包含文本文档本身。

实际上,可以结合使用 etx_ViewHilite() 例程与 etx_GetHilite() 例程,以查看 multimediaeditor 的突出显示实例。下面的复杂查询返回包含词 multimedia editor 的每个实例的相关文档文本,这些词由 HTML 标记 <b></b> 环绕:
SELECT etx_ViewHilite (etx_GetHilite(abstract, rc), '<b>', '</b>')
FROM reports
WHERE etx_contains (abstract, 'multimedia editor', rc # etx_ReturnType);

如果想要在浏览器中查看该查询的结果,那么线索 multimediaeditor 将以粗体出现。

有关这些突出显示例程的更详细信息,请参阅例程,其中包含将 etx_ViewHilite() 例程与 etx_HiliteDoc() 例程一起使用以在单个文档中突出显示线索的示例。

也可以使用标准 GBase 8s ESQL/C 例程(如 ifx_lo_open()ifx_lo_read())或 DataBlade API 大对象例程(如 mi_lo_open()mi_lo_read())来操作 etx_HiliteType 对象。
提示: 可以使用 NO_HILITE 查询参数来加速特定类型的查询,这类查询希望返回查询结果的分数但不会突出显示信息。请参阅 etx_contains() 运算符,以获取有关 NO_HILITE 查询参数的更多信息。