【发布时间】:2011-08-24 10:33:17
【问题描述】:
我想在具有自定义购物车/后端系统的网站上实现自动建议功能。该系统允许输入客户可能输入的单词和建议列表;例如单词的“cal”和建议的“钙,卡路里”。我有 6000 种产品,我对如何构建这样的列表感到困惑。如果我们以“钙”为例,我应该将其切片为“ca”、“cal”、“calc”并为其创建建议吗?另外我该如何处理拼写错误的单词,例如“calsium”?有没有办法自动化这个过程?请指教。谢谢。
【问题讨论】:
我想在具有自定义购物车/后端系统的网站上实现自动建议功能。该系统允许输入客户可能输入的单词和建议列表;例如单词的“cal”和建议的“钙,卡路里”。我有 6000 种产品,我对如何构建这样的列表感到困惑。如果我们以“钙”为例,我应该将其切片为“ca”、“cal”、“calc”并为其创建建议吗?另外我该如何处理拼写错误的单词,例如“calsium”?有没有办法自动化这个过程?请指教。谢谢。
【问题讨论】:
对于开始,只有在输入一定数量的字符时才会触发自动完成功能。否则,您将搜索 a,这可能会得到比需要更多的结果。
对于匹配单词,如果您使用的是数据库,它们通常支持LIKE 比较进行通配符匹配:
SELECT `name` FROM `products` WHERE `name` LIKE 'cal%'
请注意,您将需要一个支持全文索引的表,否则您真的不喜欢这种性能。我还建议创建一个单独的数据库,如果可能的话,在一个单独的服务器上是一个简单的数据挖掘服务器,并复制你的生产服务器的产品列表。这样您就不会为了自动完成而占用主数据库的资源。
对于拼写错误的单词,您可以尝试使用Levenshtein distance 之类的方法,它可以显示两个单词的拼写程度。
【讨论】:
Auto Suggest 可以使用诸如 Trie、三元搜索树之类的数据结构来实现。命中 DB 不是一种有效的解决方案,而且占用大量 CPU。
【讨论】: