我正在开发一个基于php-mysql的网站,主要用于搜索。我之前在所有查询中都使用了LIKE运算符。但是我的sql变得太大而复杂,因为可能有多个关键字要通过字段列表进行搜索。我发现FULLTEXT搜索不仅提高了性能,而且查询变得更具可读性。但对于FULLTEXT搜索,我有以下问题:
$ sql = mysql_query(“SELECT * FROM table WHERE MATCH(field1,field2, field3,field4)AGAINST('+ val1 * + val2 * + val3 *');“);
而不是
$ sql = mysql_query(“SELECT * FROM table WHERE(filed1 LIKE'%val1%'OR filed2 LIKE'%val1%'OR filed3 LIKE'%val1%'OR filed4 LIKE'%val1%') AND(提交1 LIKE'%val2%'或提交2 LIKE'%val2%'或提交3 LIKE'% val2%'或已归档4 LIKE'%val2%')AND(已提交1 LIKE'%val3%'或已归档2 LIKE'%val3%'OR filed3 LIKE'%val3%'OR filed4 LIKE'%val3%')“);
上一个查询是否真的会提高我对第二个查询的效果?
2。 对于高级搜索,用户输入可以是与结果匹配的关键字,也可以是与结果不匹配的关键字。所以我的sql如下:
$ sql = mysql_query(“SELECT * FROM table WHERE(filed1 LIKE'%val1%'OR filed2 LIKE'%val1%'OR filed3 LIKE'%val1%'OR filed4 LIKE'%val1%') AND(提交1 LIKE'%val2%'或提交2 LIKE'%val2%'或提交3 LIKE'% val2%'或已归档4 LIKE'%val2%')AND(已提交1 LIKE'%val3%'或已归档2 LIKE'%val3%'OR filed3 LIKE'%val3%'OR filed4 LIKE'%val3%')“) AND(提交1不喜欢'%val1%'或提交2不喜欢'%val1%'或提交3 不喜欢'%val1%'或提交4不喜欢'%val1%')和(提交1不喜欢'% val2%'或者提交2不喜欢'%val2%'或提交3不喜欢'%val2%'或 提交4不喜欢'%val2%')和(提交1不喜欢'%val3%'或提交2 不喜欢'%val3%'或提交3不喜欢'%val3%'或提交4不喜欢'% VAL3%')“);
这不安静可读,我觉得会降低搜索性能。但我不确定是否可以使用FULLTEXT搜索来完成。如果是,那么查询是什么?
最后,我的问题是我应该坚持使用WHERE / LIKE进行搜索还是进行FULLTEXT搜索?
P.S。我的数据库很小,只有1000行和10个字段。