如何构建自动建议/自动完成的建议列表

时间:2011-05-12 20:08:29

标签: autocomplete autosuggest

我想在具有自定义购物车/后端系统的网站上实施自动推荐功能。系统允许输入客户可能提出的单词和建议列表;例如“cal”表示单词和“calcium,calorie”的建议。我有6000个产品,我对如何构建这样的列表感到困惑。如果我们采用“钙”示例,我应该将其切成“ca”,“cal”,“calc”并为其创建建议吗?另外我如何处理拼写错误的单词,如“calsium”?有没有办法自动化这个过程?请指教。感谢。

2 个答案:

答案 0 :(得分:1)

对于开始,仅在输入一定数量的字符时才启用自动完成触发器。否则你将会搜索a,这可能会产生比必要更多的结果。

对于匹配单词,如果您使用的是数据库,它们通常支持通配符匹配的LIKE比较:

SELECT `name` FROM `products` WHERE `name` LIKE 'cal%'

请注意,您需要一个支持全文索引的表,或者您真的不喜欢这个性能。我还建议在一个简单的数据挖掘服务器的单独服务器上创建一个单独的数据库,并复制生产服务器的产品列表。这样,您就不会占用主数据库的资源以进行自动完成。

对于拼写错误的单词,您可以尝试类似Levenshtein distance的内容,以显示拼写两个单词的拼写程度。

答案 1 :(得分:1)

Auto Suggest可以使用Trie,Ternary搜索树等数据结构来实现。使用DB不是一种有效的解决方案和CPU密集型。