我在 DB2 版本 11.1 数据库中进行文本搜索时遇到问题。数据库不区分大小写。我已经在 CLOB 类型的列上创建了全文索引。现在我发现了一个异常。
要在文本中搜索单词,我使用以下查询:
db2 "select id from table where CONTAINS(column,'wider')=1"
如果我在以下文本中搜索“Wider”一词:
“美式酒吧区前部拥有令人印象深刻的结构柜台,与船中部的扩展休息区结合在一起,休息区配有宽沙发,旨在适应不同的欢乐场合,并由碳纤维硬顶遮蔽。”
并使用上面粘贴的查询,不幸的是,我不明白为什么,文本搜索产生了积极的结果;文本包含搜索到的单词。
如果我搜索“wide”一词,文本搜索会正确产生肯定的结果。如果我搜索单词“wid”,文本搜索会正确地产生否定结果。
“更广泛”这个词的问题与其他词的表现类似。
有人可以解释一下这个问题吗?谢谢你。
按设计工作...
CONTAINS 函数搜索单词或短语的匹配项,并且可以 与通配符一起使用来搜索a中的子字符串匹配项 方式类似于 SQL LIKE 谓词,可以搜索精确的 字符串匹配方式类似于 SQL = 运算符。然而, 使用 CONTAINS 函数和 使用 SQL LIKE 谓词或 = 运算符。 LIKE 谓词和 = 运算符在文档中搜索模式,而 CONTAINS 使用 语言处理:也就是说,它搜索不同形式的 搜索词。例如,即使不使用通配符, 搜索术语“工作”还会返回包含“工作”的文档 并工作了。
如果要查找完全匹配,请使用双引号
db2 "select id from table where CONTAINS(column,'"wider"')=1"