我的搜索查询完全有效但只有当我使用正确的术语时(例如'iPhone 6 Plus',但如果我只搜索'iPhone',它将不返回任何内容。
我的搜索查询是:SELECT * FROM products WHERE name LIKE '" . $term . "' OR brand LIKE '" . $term . "' LIMIT 0 , 30"
那么我如何才能创建一个更好的查询,以便更好地搜索?
非常感谢所有可以提供帮助的人。
答案 0 :(得分:3)
要对部分搜索字词进行匹配,您必须为查询添加一些wildcards,%
:
SELECT * FROM products WHERE name COLLATE UTF8_GENERAL_CI LIKE '%" . $term . "%' OR brand COLLATE UTF8_GENERAL_CI LIKE '%" . $term . "%' LIMIT 0 , 30"
您只需将COLLATE UTF8_GENERAL_CI
添加到列定义中,然后就不必修改查询。例如:
ALTER TABLE products MODIFY COLUMN name VARCHAR(...) CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI.
如果您需要更复杂的内容,则需要查看fulltext searches。
拉丁语排序规则(LATIN1_GENERAL_CS
)是众所周知的不区分大小写搜索之一。如果我指定的那个(我试图总是使用UTF-8)不起作用,则用拉丁语校对代替。