IBM® Informix® 12.10

创建同义词词典

您可以创建同义词词典,以使 Basic Text Search 返回指定词语的同义词以及精确匹配项。

要创建同义词词典:

  1. 使用同义词数据的文本列创建同义词词典表。您可以使用 bts 索引支持的任何数据类型。
  2. 将同义词数据添加到同义词词典表。同义词数据列的每个值应为您要视为同义词的词语的列表。
  3. 对同义词词典表创建 bts 索引。包含 thesaurus="yes" 参数。
  4. 对包含文本数据的表创建 bts 索引,指定同义词数据列作为要建立索引的列。包含 thesaurus_index="thesaurus_index" 参数,指定您在步骤 3 中创建的同义词词典索引。此外,将缺省查询运算符设置为 OR:query_default_operator="OR"

示例

假设您有一个表,其中包含以下语句生成的数据:

CREATE TABLE mytbl(name char(30));
INSERT INTO mytbl(name) VALUES('mark');
INSERT INTO mytbl(name) VALUES('elizabeth');
INSERT INTO mytbl(name) VALUES('marco');
INSERT INTO mytbl(name) VALUES('beth');

您将创建名为 mythesaurus 的同义词词典表,并向其添加同义词数据:

CREATE TABLE mythesaurus(synonyms lvarchar);
INSERT INTO mythesaurus(synonyms) 
      VALUES('elizabeth liz beth eliza leisal betty liza');
INSERT INTO mythesaurus(synonyms) 
      VALUES('mark marc marcus marco');

将对同义词词典表创建 bts 索引:

CREATE INDEX mythesaurus_index
ON mythesaurus(synonyms bts_lvarchar_ops)
USING bts(thesaurus="yes");

将创建 bts 索引,该索引使用表 mytbl 上的同义词词典:

CREATE INDEX name_index
ON mytbl(name bts_char_ops)
USING bts(thesaurus_index="mythesaurus_index");

现在,当您搜索名称 elizabeth 时,查询将同时返回精确匹配项和同义词 beth

SELECT * FROM mytbl WHERE bts_contains(name, 'elizabeth');

name
elizabeth
beth
2 row(s) retrieved.

在搜索两个名称时,查询将返回四个同义词,但不返回精确匹配项:

SELECT * FROM mytbl WHERE bts_contains(name, 'marcus or liza');

name
mark
marco
elizabeth
beth
4 row(s) retrieved.


发送反馈 | 示例交流 | 故障诊断

要查找 PDF,请参阅 IBM Informix 12.10 系列产品的出版物
有关发行说明、文档说明和/或机器说明,请参阅发行说明页。
时间戳记 发行日期:2013 年 3 月