提供了两个 SQL 表值函数,它们都称为 db2ext.textsearch。要使用 db2ext.highlight 函数,必须使用带有附加 numberOfHits 和 hitInformation 参数的 db2ext.textsearch 函数。
在此示例中,会调用 db2ext.highlight 函数来显示整个文档,且不会突出显示由 db2ext.textsearch 函数找到的任何匹配项。
select p.docid, db2ext.highlight(p.comment, t.hitinformation, ' WINDOW_NUMBER = 0 ') as highlight from DB2EXT.TEXTTAB p, table (db2ext.textsearch('"bestseller" | "peacekeeping" | "soldiers" | "attention"', 'DB2EXT', 'COMMENT', 0, 20, cast(NULL as INTEGER), 10)) t where p.docid = t.primkey and p.docid = 2
搜索自变量将返回以下结果:
DOCID HIGHLIGHT 2 A New York Times bestseller about peacekeeping soldiers called "Keepers" who devise a shocking scheme to get the worlds attention after their tour of duty ends. 1 record(s) selected.
在所有 db2ext.highlight 示例中,表函数 db2ext.textsearch 搜索下列单词中的任何一项:“bestseller”、“peacekeeping”、“soldiers”或“attention”。
在此示例中,会调用 db2ext.highlight 函数来显示整个文档,并且突出显示由 db2ext.textsearch 函数找到的所有匹配项。
select p.docid, db2ext.highlight(p.comment, t.hitinformation, ' WINDOW_NUMBER = 0, TAGS = ("<bf>", "</bf>" ) ') as highlight from DB2EXT.TEXTTAB p, table (db2ext.textsearch('"bestseller" | "peacekeeping" | "soldiers" | "attention"', 'DB2EXT', 'COMMENT', 0, 20, cast(NULL as INTEGER), 10)) t where p.docid = t.primkey and p.docid = 2
搜索自变量将返回以下结果:
DOCID HIGHLIGHT 2 A New York Times <bf>bestseller</bf> about <bf>peacekeeping</bf> <bf>soldiers</bf> called "Keepers" who devise a shocking scheme to get the worlds <bf>attention</bf> after their tour of duty ends. 1 record(s) selected.
在此示例中,会调用 db2ext.highlight 函数来最多显示文档的 10 个部分(窗口)。每个窗口大小为 24,在匹配项的每一边大约具有 12 个字节的数据。此外,将突出显示由 db2.textsearch 表函数找到的匹配项。
select p.docid, db2ext.highlight(p.comment, t.hitinformation, ' WINDOW_NUMBER = 10, WINDOW_SIZE = 24, TAGS = ("<bf>", "</bf>" ) ') as highlight from DB2EXT.TEXTTAB p, table (db2ext.textsearch('"bestseller" | "peacekeeping" | "soldiers" | "attention"', 'DB2EXT', 'COMMENT', 0, 20, cast(NULL as INTEGER), 10)) t where p.docid = t.primkey and p.docid = 2
搜索自变量将返回以下结果:
DOCID HIGHLIGHT 2 York Times <bf>bestseller</bf> about <bf>peacekeeping</bf> ... <bf>peacekeeping</bf> <bf>soldiers</bf> called "Keepers" ... the worlds <bf>attention</bf> after their 1 record(s) selected.
找到的第一个匹配项为 <bf>bestseller</bf>,此匹配项将确定第一个窗口。第二个匹配项 <bf>peacekeeping</bf> 与第一个匹配项只相隔 8 个字节,会将它完全放置在第一个窗口中。第三个匹配项 <bf>soldiers</bf> 在第一个窗口外边,它将确定新窗口。由于第二个匹配项 <bf>peacekeeping</bf> 只与 <bf>soldiers</bf> 匹配项的左边相隔 2 个字节,因此,也会将它放置在第二个窗口中,并进行突出显示。第四个匹配项 <bf>attention</bf> 在第二个窗口外部,所以它将确定新窗口。由于此窗口中没有包含任何先前的或附加的匹配项,因此,该窗口中只包含匹配项附近的数据。
另外,因为没有指定任何 WINDOW_SEPARATOR,所以采用缺省窗口分隔符“...”来分隔这三个文档窗口。
为了确保在使用 db2ext.highlight 函数时具有高性能,用户应限制 db2ext.textsearch 表值函数中的搜索结果。
有关这些参数进一步的详细信息,请参阅 DB2EXT.HIGHLIGHT。