我有一个文件路径搜索,允许用户在网站上搜索他/她的文件。示例条目是:
`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
有没有其他方法可以实现全文搜索?
答案 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更改最小和最大字长