可以使用 xmltags 参数对特定字段建立索引,这样就可以按 XML 标记名称限制搜索。
EXECUTE PROCEDURE IFX_ALLOW_NEWLINE('t'); CREATE TABLE boats(docid integer, xml_data lvarchar(4096)); INSERT INTO boats values(1, ' <boat> <skipper>Captain Jack</skipper> <boatname>Black Pearl</boatname> </boat> '); INSERT INTO boats values(2, ' <boat> <skipper>Captain Black</skipper> <boatname>The Queen Anne's Revenge</boatname> </boat> ');
CREATE INDEX boats_bts ON boats(xml_data bts_lvarchar_ops) USING bts(xmltags="(skipper,boatname)") IN bts_sbspace;
该索引将包含以下字段:
skipper:Captain Jack boatname:Black Pearl
skipper:Captain Black boatname:The Queen Anne's Revenge
SELECT xml_data FROM boats WHERE bts_contains(xml_data, 'skipper:black');
搜索将返回 docid 2,因为该行的 skipper 字段包含词语 "black"。对于 docid = 1,boatname 字段也包含词语 "black",但是不会返回该字段,因为搜索仅针对 skipper 字段。