我有一个在线商店应用程序和大约1000个ITEMS的数据库。
ITEM{
categories / up to 5 out of 60
types / up to 2 out of 10
styles / up to 2 out of 10
rating / 0-5
}
现在我不会创建具有预定义条件的比较项目到项目:
- 至少一个常见的类别 + = 25个点
- 至少一个常见的类型 + = 25p
- 如果第一项没有样式 + = 0p
- 如果普通 - = 10p中没有样式。
- 对于评级差异中的每个点 - = 5p。
并将结果存储在表格中。为item_to_item_similarity.score
。
现在我用一个漂亮而有光泽的PHP函数和类来完成整个事情 并且是一个计算和更新所有关系的函数。
在测试中有20个项目..一切顺利。 但是当测试数据增加到1000项时......导致1000x1000的关系 服务器开始抱怨script_time_out ..和内存不足:)
索引,交易和预加载一些数据..帮助了我一半。
是否有更智能的方法来比较和评估此类数据?
我想要代表相关的类别,风格等 作为一组ID,可能在一些二进制掩码中......以便可以轻松比较它们 (即使在SQL中?)也不需要创建类,并且通过数组循环数百万次。
答案 0 :(得分:1)
我知道这不是最好,但是,以下内容如何:
就个人而言,我会考虑完全使用不同的方法,那里有很多算法你必须找到一个适用于这种情况的算法。这是一个例子:
此外,这里是用PHP编写的Jaccard索引,它可能比您当前的方法更有效