替换通配符%LIKE%查询

时间:2013-03-22 23:25:03

标签: mysql

我有一个文件路径搜索,允许用户在网站上搜索他/她的文件。示例条目是:

`path`
- /Volumes/Fulfill/03-01-13/FILFILE.txt
- /Volumes/Master/.Trash/Weeds.mov

如果有人搜索“master mov”,它会执行以下查询:

SELECT * FROM files WHERE path LIKE '%master%' AND path LIKE '%mov%'

并将返回:

- /Volumes/Master/.Trash/Weeds.mov

进行上述搜索的更好方式或方法是什么?

更新:我尝试了以下操作,但我对MYISAM FULLTEXT搜索的实施完全没有效果:

select * from path where path like '%red%' and path like '%state%' <-- works
select * from path where match(path) against ('red state'); <-- zero results

有没有其他方法可以实现全文搜索?

1 个答案:

答案 0 :(得分:1)

%是一个通配符。如果你用这样的东西替换它会更快:

SELECT * FROM files WHERE path LIKE '/Volumes/Master%mov'

因为您没有检查更多条件。

<强>更新

对于全文选项,您将(一次)

ALTER TABLE files ADD FULLTEXT(path);

然后进行搜索

SELECT * FROM files
WHERE MATCH (path)
AGAINST ('+Master +mov' IN BOOLEAN MODE);

忽略短字,默认最小长度为4个字符。您可以使用变量ft_min_word_len和ft_max_word_len更改最小和最大字长