多年来,当我希望我的用户搜索我的数据库中的某个字段,在那里他可以输入任何他想要的内容时,我会使用算法来破解单词并单独搜索每个单词......一团糟。
例如,如果用户在搜索框中输入" aaa bbb ccc"我不喜欢使用:
SELECT id
FROM table
WHERE description LIKE '%aaa bbb ccc%'
因为有时用户会按顺序输入内容并且上面的查询会找到。我通常做的是打破字符串并将其与PHP连接,结果变为:
SELECT id
FROM table
WHERE description LIKE '%aaa%'
AND description LIKE '%bbb%'
AND description LIKE '%ccc%'
但今天在与朋友交谈后,我想知道是否有一些本地方式可以更快地使用MY SQL?
答案 0 :(得分:2)
您想要做的是full text search,现在大多数关系数据库都支持它,包括mysql。
答案 1 :(得分:0)
我认为你可以使用REGEXP。例如:
Select * from table where description REGEXP 'aaa|bbb|ccc'
答案 2 :(得分:0)
FULLTEXT搜索非常快。 INSTR或定位比REGEXP更好。但这取决于各种因素。 更多比较here
SELECT * from table where INSTR(description, 'aaa') >0
SELECT * from table where LOCATE(description, 'aaa') >0