我创建了一个包含两列的表.我插入了两行.
id name 1 narsi reddy 2 narei sia
一个是简单的数字类型,另一个是CLOB类型.所以我决定使用索引.我通过使用contains来查询.
查询:
select * from emp where contains(name,'%a%e%')>0 2 narei sia
我预计2会来,但不会.但是,如果我给予它同样的给予我想要的东西.
查询:
select * from emp where name like '%a%e%' ID NAME 1 (CLOB) narsi reddy 2 (CLOB) narei sia 2 rows selected
最后,我明白,就像搜索整个文档或段落,但包含正在查找单词.
那我怎样才能获得所需的输出?
解决方法
LIKE和CONTAINS是根本不同的搜索方法.
LIKE是一个非常简单的字符串模式匹配器 – 它分别识别两个通配符(%)和(_),它们分别匹配零或多或一个字符.在您的情况下,%a%e%匹配表中的两个记录 – 它查找零个或多个字符后跟a,后跟零个或多个字符后跟e,后跟零个或多个字符.它的返回值也非常简单:它返回“匹配”或“不匹配” – 没有灰色阴影.
CONTAINS是一个功能强大的搜索工具,它使用上下文索引,它构建了一种可以使用CONTAINS搜索语法搜索的单词树.它可用于搜索单个单词,单词组合,并具有自己丰富的语法,例如布尔运算符(AND,NEAR,ACCUM).它也更强大,它不是返回简单的“匹配”或“不匹配”,而是返回“得分”,可用于按相关性顺序对结果进行排名;例如CONTAINS(col,’dog NEAR cat’)将为文档返回更高的分数,其中这两个单词都被发现在一起.