我正在寻找在线商店的产品搜索功能。这家商店有 3500 件商品。这些项目可以在 mysql 数据库或文件中找到。我想获得与搜索词最匹配的产品。搜索词应与产品名称进行比较。
因为搜索功能是网上商店最重要的部分之一,所以我正在寻找一个非常有效的解决方案。有人知道易于实施的解决方案吗?它不需要是免费的。
更新:
到目前为止,我尝试将该术语与产品名称进行比较。首先,我正在查看是否可以 1on1 找到该术语。之后,我使用术语中的单个单词并检查它们是否可以在产品名称中找到。这有效,但不够准确。
你说你想要一个简单的解决方案,但你已经注意到了问题。
尝试类似:
http://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html
我会说这是使用 LIKE 的一个复杂级别,但结果要好得多。
如果您需要比这更好的,那么我会说您需要重新考虑仅搜索愚蠢的标签,并且您需要开始解决如何允许您的用户过滤您的数据。
例如,“Canon 5D MK III”是镜头还是相机?
这些搜索在处理方面变得昂贵,为什么允许某人使用“佳能”一词搜索您的数据库,而无需询问他们是否正在寻找相机或镜头,可能会拉回数百个结果?
能够允许这种过滤将表明您的数据库具有允许您将所有相机从镜头与附件分开的列。
所以,搜索很好,但过滤描述每一行的元数据更好,如果你还没有这样做,那么你可以考虑开始这个过程。我建议您将获得的好处将远远超过在您的网站上提供搜索。
这就是您运行查询和打印产品信息的方式。当然,你需要让它更好看,因为有更多的列。
$res = mysqli_query($connection ,"SELECT * FROM `products` WHERE productname like '%xxx%'");
while($row = mysqli_fetch_array($res))
{
echo $row['productname'] . '<br>';
}
如果您至少熟悉 php 并且知道如何查询数据库,我建议您使用此文档,最终您将知道如何处理它。
http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html
简而言之,LIKE 类似于比较运算符,只是按模式匹配。在您的示例中,可以说产品名称 LIKE "%searchterm%"。
我希望这可以帮助你。问候