php - mySQL LIKE 查询

标签 php mysql search full-text-search

我正在尝试在我的数据库中搜索一个字符串,但它应该能够匹配任何单词而不是整个短语。

假设,一个表数据有像a b c d e f g这样的文本。然后,如果我搜索 d c b,它应该能够显示结果。

field LIKE '%d c b%' 不能以这种方式工作。

有人可以建议一种更强大的搜索方式,也可以显示相关性计数器。

我不介意对上述内容也使用 PHP,但更喜欢在数据库级别进行搜索。

最佳答案

为获得最佳结果,您需要为数据创建 FULLTEXT 索引。

CREATE TABLE mytable (id INT NOT NULL, data TEXT NOT NULL, FULLTEXT KEY fx_mytable_data) ENGINE=MyISAM

SELECT  *
FROM    mytable
WHERE   MATCH(data) AGAINST ('+word1 +word2 +word3' IN BOOLEAN MODE)

请注意,要索引单字母单词(如您的示例所示),您需要在 MySQL 中将 ft_min_word_len 设置为 1配置。

即使您没有索引(只要您的表是 MyISAM),此语法也可以工作,但会很慢。

关于php - mySQL LIKE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1400770/

相关文章:

mysql - 在这种特定情况下是否需要主键?

php - 如何将我的聊天室 ID 传递给我的 ajax 调用?

php - CSV下载在实时服务器上不起作用

javascript - Symfony 4/javascript - 关系上的 UniqueEntity 约束

html - 删除 HTML 标签但仍允许特殊字符

php - 使用多个 LIKE 条件搜索查询无法按预期工作

math - 尝试计算带有 5 个数字的棋盘的状态空间

php - 在 REST API 中处理 "search"的最佳方法是什么?斯芬克斯呢?

PHP session 管理,使用Cookie统计用户

php - 将文件上传到另一个域