搜索一个巨大的社交数据库


Searching a huge social Database

我正在我的社交网络网站上实现搜索,我遇到了这个问题。

例如,用户"A"正在搜索"John",如果该用户是用户"A的朋友、朋友的朋友或朋友的朋友的朋友。。。递归级别达到100,我将能够通过搜索找到它。

如果用户"A"刚刚注册,没有朋友,他正在搜索"John",而我没有可以用来过滤记录的适当信息,该怎么办?我将不得不在我的整个数据库中搜索"John"(当然,我使用MySQL LIMIT子句将总搜索结果限制为5)。

这种方法有效吗?或者我还能做些什么来避免这个问题吗?

而且,名字、中间名和姓氏不能设置为索引,因为它们不是唯一的。因此,我正在搜索一个未索引的列(没有预索引(我认为谷歌会预索引)),并使用MySQL LIKE进行搜索。那么,在考虑提高性能时,我该怎么办呢?

使用MySQL、PHP。提前感谢

以下是我在您所做的工作中看到的一些问题。。

通过在查询中使用limit 5,您将始终显示查询找到的第一个或最后5个John(基于查询)。。我会请求新用户通过电子邮件(唯一)或名字和姓氏(非唯一)添加他们的前几个朋友

一旦新用户有多个朋友,你将能够提供更好的搜索结果,并能够避免总是向使用相同关键字/名称的每个人显示相同的人