关键字搜索

如果您指定的线索包含多个词,那么您可以指示搜索引擎将每个词当作独立的实体。这类搜索称为关键字搜索。当文本搜索引擎执行关键字搜索时,只要它遇到线索中的一个或多个词,都会返回一行。

通过将 SEARCH_TYPE 调整参数设置为 WORD,并将其作为 Row() 构造函数的第二个参数传递给搜索引擎,可以指定关键字搜索。例如,以下查询指示搜索引擎返回在 description 列出现关键字 multimediadocument editor 的所有行。
SELECT id, description FROM videos
    WHERE etx_contains (description,
    Row('multimedia document editor', 'SEARCH_TYPE = WORD'));
下图说明了此示例。

图: 关键字搜索示例


显示将 SEARCH_TYPE 调整参数用于单个词。videos 表的命中列表是包含下列词的那些行:“multimedia”、“document”和“editor”。

搜索不返回标识为 1003 的行,因为词 multimedia 被拼写错误并且该文本不包含线索中的其他两个词。虽然标识为 1004 的行中词 multimedia 被拼写错误,但由于它包含线索中其他两个词(documenteditor),所以该行被返回。

搜索引擎为关键字搜索返回的行分配一个文档分数。文档分数基于在文档中发现的关键字数量。 例如,包含 2 个关键字(共 3 个关键字)的文档的分数是仅包含 1 个关键字的文档的两倍。

如果没有在 etx_contains() 运算符中指定 SEARCH_TYPE 调整参数,那么缺省情况下文本搜索引擎执行关键字搜索。这就意味着以下两种搜索是等同的,因此在本手册中经常将它们替换使用:
SELECT id, description FROM videos
    WHERE etx_contains (description, 
    Row('multimedia document editor'));

SELECT id, description FROM videos
    WHERE etx_contains (description, 
    Row('multimedia document editor', 'SEARCH_TYPE = WORD'));