【发布时间】:2011-10-23 02:27:27
【问题描述】:
我正在为产品目录创建搜索功能。
这是目前为止的输入代码:
<form name="search" method="post" action="'.$PHP_SELF.'">
<div>
Search for: <input type="text" name="find" />
<input type="hidden" name="searching" value="yes" />
<input type="submit" name="search" value="Search" />
</div>
</form>
这是查询 Mysql 数据库以进行匹配的查询:
SELECT * FROM `products` WHERE upper(`desc`) LIKE'%$find%'
当用户搜索一个单词字符串时,这一切都很好。
这里的问题是,当用户搜索两个单词的字符串时,找不到匹配项,因为有时这些字符串与单独的特征相关。
例如,产品目录包含有关各种巧克力的信息:
你会得到巧克力棒、巧克力盒、巧克力包等......
现在虽然desc 字段中的一些描述包含单词巧克力和棒,但有些包含变体,例如“公司棒 120 克巧克力”。
这会导致上述代码出现问题,因为如果用户搜索“巧克力吧”,除非desc 字段中的描述明确包含该变体,否则不会返回任何匹配项。
我希望发生的是,当用户搜索“巧克力吧”时,将返回包含变体“巧克力”和“酒吧”的任何匹配项。
有人对我将如何完成这项任务有任何意见吗?
可以把$find 变成一个数组,然后用“”作为分隔符吗?
【问题讨论】:
-
这就是类别/标签的用途。
-
@Tomalak 再次嗨!我对此很陌生,但我会研究这些类别和标签,感谢您的输入!
-
我的意思是你会创建它们、索引它们并搜索它们,而不是强迫自己搜索人类可读的“描述”。