如何在InnoDB中实现全文搜索?

时间:2018-05-24 10:16:57

标签: php mysql search

我有查询,

e.g。

名称栏目有“Rodrigue Dattatray Desilva”。

我想以这样的方式编写查询,

如果我搜索'gtl'并匹配字符串中的任何位置,则应显示结果。

我知道在php中我可以应用像'%g%t%l%'这样的补丁。

但我想知道MySql方式。

注意:我可以搜索任何内容,我只是举个例子。

修改

create table Test(id integer, title varchar(100));
insert into Test(id, title) values(1, "Rodrigue Dattatray Desilva");

select * from Test where title like '%g%t%l%';

考虑上述情况。其中“gtl”是字符串我试图在标题中搜索,但搜索字符串可以是任何东西 gtl是字符串,它存在于当前标题中但不是按顺序存在。

2 个答案:

答案 0 :(得分:0)

简单的答案是你需要一个额外的通配符:

select * from Test where title like '%g%t%l%';

您发布的查询在“l”之后没有外卡,因此只有在短语以“l”结尾时才匹配。

更复杂的答案是您还可以使用regular expressions,这会为您提供更多搜索功能。

甚至更复杂的答案是这些字符串匹配查询的性能往往很差 - 外卡意味着索引通常无效。如果表格中有大量行,full-text searching要快得多。

答案 1 :(得分:0)

你也可以在Mysql中做同样的事情。

您可以在MySql中使用关键字,如

% - 百分号表示零个,一个或多个字符

_ - 下划线表示单个字符