使用php搜索mysql,如何在用户的搜索字符串中生成(和或不)功能?
我正在一个网站上做一个搜索功能,让用户搜索mysql数据库中的值 例如: 此表中有两种产品 一个描述值为焦炭罐330ml,另一个雪碧罐330ml 现在,当搜索这些项目时,假设用户输入can作为字符串。显示这两个项目是因为它们都包含can 如果用户输入焦炭,焦炭罐将被退回 现在想象一下,数据库中有每一罐苏打水,每一罐都是一种产品 像这样的搜索功能,会有点麻烦。假设一个用户只想要两种产品,它们是可乐罐和雪碧罐 他们需要搜索可乐、雪碧、罐头和330ml之类的东西 这应该只返回我的示例中使用的两个产品 我面临的问题不是这个。我的搜索功能运行起来与我的原始示例类似。我试图包含某种and,or,而不是功能,但还没有完全决定这一切应该如何解决 目前,搜索可乐罐将只返回包含可乐和罐的结果。但是如果我搜索了coke sprite can,则不会返回任何结果,因为没有包含字符串中使用的所有3个单词的结果 以下是查询:使用php搜索mysql,如何在用户的搜索字符串中生成(和或不)功能?,php,mysql,search,Php,Mysql,Search,我正在一个网站上做一个搜索功能,让用户搜索mysql数据库中的值 例如: 此表中有两种产品 一个描述值为焦炭罐330ml,另一个雪碧罐330ml 现在,当搜索这些项目时,假设用户输入can作为字符串。显示这两个项目是因为它们都包含can 如果用户输入焦炭,焦炭罐将被退回 现在想象一下,数据库中有每一罐苏打水,每一罐都是一种产品 像这样的搜索功能,会有点麻烦。假设一个用户只想要两种产品,它们是可乐罐和雪碧罐 他们需要搜索可乐、雪碧、罐头和330ml之类的东西 这应该只返回我的示例中使用的两个产品
$dataQuery = "
SELECT *
FROM `products`
WHERE upper(`desc`)
LIKE '%"
. implode("%'
AND upper(`desc`)
LIKE '%",
$keywords_array)
. "%'
ORDER BY `desc`";
$keywords_array是根据用户输入的搜索字符串构建的数组,经过验证后,其代码如下:
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
$_SESSION['find'] = $find;
$keywords_array = explode(' ', $find);
$find是由用户输入的搜索字符串的post值设置的字符串
有没有人对实现我所解释的目标的好方法有什么想法
如果您需要任何附加代码或更好的解释,请直接询问
谢谢 您要查找的内容有一个限制,即默认最小字长为4个字符,因此如果无法编辑服务器配置,则无法搜索can
此外,它还有一个停止字策略,不会对出现在总数据中超过50%的字提供结果。如果您在MyISAM表上,请使用全文索引,允许自然语言搜索。coke或sprite+可以键入语法。您好,谢谢!这似乎是答案。你能给我举个例子,说明我应该如何重新格式化我的查询以利用全文吗?@Black一个简单的例子:在布尔模式下,从products MATCH desc与“coke sprite 330ml”进行匹配