当使用 SEARCH_TYPE = PHRASE_EXACT 执行搜索时,搜索文本必须包含与线索相同的词组,以为命中发生做准备。如果在指定精确词组搜索之外,还指定了模式搜索(例如,通过指定 PATTERN_ALL),那么线索中的各个词必须与搜索文本中的对应词进行模式匹配,模式匹配时搜索文本中对应词的出现顺序必须与线索中这些词的顺序一致才算匹配。
例如,在结合了精确词组搜索的模式搜索中,文本 jill john jones 与线索 jyll jonh gones 匹配,但与线索 john jill jones 不匹配。即是说,不论是否还另外指定了模式匹配,顺序始终以精确词组搜索中的顺序为准。
在精确词组搜索中,必须在搜索文本中找到线索(或它的模式匹配)中的所有词。对于缺少一个或多个词的部分匹配不能算作命中。
当使用 SEARCH_TYPE = PHRASE_APPROX 执行搜索时,搜索文本必须包含与线索完全相同的词组、线索中顺序相同的一个或多个词,或者线索中顺序不同的一个或多个词。GBase 8s Excalibur Text Search DataBlade 模块使用词的数量和顺序为所有命中产生文档分数;如果搜索文本中以更接近的顺序出现的词越多,那么分配给它的分数也就越高。
He can drop many balls (精确匹配) He has many balls (包含两个与线索顺序相同的词) He let five balls drop (包含两个与线索顺序不同的词) He has many children (包含线索中的一个词)
He can dorp many valls (假设 dorp 是 drop 的模式匹配项,以此类推) He has mani balds He let five galls frop He has many children
SELECT * FROM videos WHERE etx_contains(description, Row('multimedia' , 'PATTERN_TRANS & PATTERN_SUBS')) ;
图: 使用调整参数的样本文本搜索查询
调整参数 PATTERN_TRANS 和 PATTERN_SUBS 只考虑每个词仅一个字母的调换或替换。