我正在尝试在我的数据库中搜索一个字符串,但它应该能够匹配任何单词而不是整个短语。
假设,一个表数据有像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/