0

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

`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

除了上述方法之外,还有另一种实现全文搜索的方法吗?

4

1 回答 1

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 更改最小和最大字长

于 2013-03-22T23:34:44.953 回答