响度均衡

导航

 

查看表中某一列是否包含某个单词,假如这个列的类型是TEXT(大文本),用like 或者 regexp会非常耗时,使用FULLTEST索引会非常快。

 

添加索引

CREATE TABLE kjv(
vtext TEXT NOT NULL,
FULLTEXT(vtext)
);

ALTER TABLE tab_name ADD FULLTEXT (col1,col2,col3);

使用索引查找是否包含单词

select count(*) from kjv where MATCH(vtext) AGAINST('God');
-- 多个索引列是否包含单词,MATCH() 指定哪些列
select count(*) from kjv where MATCH(vtext,vtext1,vtext12) AGAINST('God');
-- AGAINST()指定多个单词,会对每个单词进行OR查询
select count(*) from kjv where MATCH(vtext) AGAINST('God Sin');
-- 如果想查找同时包含两个单词的行
-- 普通方法
select count(*) from kjv where MATCH(vtext) AGAINST('God')
AND MATCH(vtext) AGAINST('Sin');
-- 布尔模式搜索,+包含单词,-排除单词
select count(*) from kjv where MATCH(vtext) AGAINST('+God +Sin' IN BOOLEAN MODE);
-- 布尔模式搜索, * 通配符 , 结果即包含whirl,而且还包含whirls、whirleth
select count(*) from kjv where MATCH(vtext) AGAINST('whirl*' IN BOOLEAN MODE);

AGAINST()匹配的是整个单词,如 句子 And he different to sin,AGAINST('sin') 可以匹配,AGAINST('ffe') 不可以匹配

查找词组

-- 查找词组 , 用双引号,即相当于 "still small voice" 为一整个单词
select count(*) from kjv where MATCH(vtext) AGAINST('"still small voice"' IN BOOLEAN MODE);

 

posted on 2022-05-31 15:19  响度均衡  阅读(54)  评论(0编辑  收藏  举报