我试图实现一个典型的自动完成框,就像你从 amazon.com 知道的那样。你去那里,输入一封信,你会得到一个合理的建议,说明你可能会尝试在搜索框中输入什么。
盒子本身将由 jquery 实现,持久层和建议算法将基于 Apache Lucene/Solr 及其 Suggest-Feature。另外,我使用 lucene 的 WFST-Suggestion 对结果进行加权建议。
我的问题是,例如亚马逊如何获得这种合理的数据?我的意思是他们从哪里获得所有这些关键字和分数,所以这有意义吗?
每个产品上都是纯手工制作的款式信息吗?我认为这将是真正艰难的。或者是否可以使用机器学习理论中的聚类或分类等方法来收集数据?(然后我可以使用 mahout 或 carrot2)。
查看亚马逊的建议,我认为数据包含:
- 产品名称
- 产品/书籍的生产者/制造商/作者
- 产品特性(如颜色、类型、尺寸)
它包含更多吗?
接下来的事情是,看起来建议本身是排名的。他们如何获得这种分数来衡量建议的权重? 它是一个简单的用户点击路径跟踪,你在哪里看,用户在框中输入了什么,他选择了什么或者他之后看了什么产品?
是否使用某种逻辑在每个查询(可能缓存)上计算出这种分数?(哪个?也许是贝叶斯定理?)