非索引字列表

非索引字是指要从索引中排除,因此也会从搜索中排除的词。典型的非索引字列表包含类似于 oftheby 的词。非索引字列表取决于数据的内容和类型。

您想要从索引中排除的任何高频词都是非索引字列表包含的候选值。非索引字列表可以缩短执行搜索所花费的时间、减小索引大小并有助于避免错误命中。

要创建和删除非索引字列表,请使用为 DataBlade Module 定义的过程。例如,要创建非索引字列表,首先要创建包含非索引字列表(每行一词)的操作系统文件。然后,通过执行过程 etx_CreateStopWlst() 来让 GBase 8s Excalibur Text Search DataBlade 模块知道非索引字列表,如以下示例中所示:
EXECUTE PROCEDURE etx_CreateStopWlst
    ('stopwlist', '/local0/excal/stopwlist');

该语句从操作系统文件 /local0/excal/stopwlist 中创建非索引字列表 stopwlist。第三个可选参数可用于指定列表将存储在的智能大对象空间。如果不指定特定的智能大对象空间来存储该列表,那么会将该列表存储在缺省的智能大对象空间中。缺省的智能大对象空间由 onconfig 文件中的 SBSPACENAME 参数指定。

您可以创建自己的非索引字列表文件,也可以基于 DataBlade Module 附带的、位于下列位置的标准英语非索引字列表来创建:
$GBASEDBTDIR/extend/ETX.version/wordlist/etx_stopwords.txt 
其中,version 是指您计算机上安装的 DataBlade 模块的当前版本。

您最多可以将一个非索引字列表与 etx 索引关联。非索引字列表是在最初创建索引时使用索引参数 STOPWORD_LIST 指定的。创建 etx 索引时必须存在非索引字列表。

有时,您可能想要在搜索中包含当前存在于非索引字列表中的词。例如,假设下列词存在于非索引字列表中: toorbe。进一步假设您要精确搜索词组“to be or not to be”。要偶尔使用关联了非索引字列表的 etx 索引来搜索非索引字,请在创建索引时指定 INCLUDE_STOPWORDS 索引参数。然后,在执行搜索时使用 CONSIDER_STOPWORDS 调整参数。CONSIDER_STOPWORDS 参数强制搜索引擎包含先前被规定为非索引字的词。例如,您可以按以下方式搜索词组 to be or not to be
SELECT id, description FROM videos 
    WHERE etx_contains(description, 
    Row('to be or not to be', 
        'SEARCH_TYPE = PHRASE_EXACT & CONSIDER_STOPWORDS'));
重要: etx_contains() 运算符的 CONSIDER_STOPWORDS 调整参数,仅在为创建 etx 索引的 CREATE INDEX 语句指定了 INCLUDE_STOPWORDS='TRUE' 索引参数时才起作用。