【问题标题】:How to implement Full Text search in InnoDB?如何在 InnoDB 中实现全文搜索?
【发布时间】:2018-05-24 10:16:57
【问题描述】:

我有一个问题,

例如

名称列有“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 是字符串,它存在于当前标题中但不按顺序存在。

【问题讨论】:

  • 我认为 'STRCMP()' 是你想要的。见here

标签: php mysql search


【解决方案1】:

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

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

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

更复杂的答案是你也可以使用regular expressions,它让你对搜索有更多的权力。

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

【讨论】:

  • 我注意到并做出了有问题的更改。但可能是全文搜索是解决方案。
【解决方案2】:

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

你可以在MySql中使用关键字like

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

_ - 下划线代表单个字符

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多