我正在社交网站上实施搜索,我遇到了这个问题。
说,用户" A"正在寻找" John"如果该用户是User" A"的朋友。或朋友的朋友或朋友朋友的朋友...递归等级到100,我将能够通过搜索找到它。
如果用户" A"刚刚注册并且没有朋友,他正在寻找" John"我没有适当的信息可以用来过滤记录?我将不得不在整个数据库中搜索" John" (当然,我使用MySQL LIMIT子句将总搜索结果限制为5)。
这种方法有效还是我还能做些什么来避免这个问题?
此外,名字,中间名,姓氏不能设置为索引,因为它们不是唯一的。所以,我正在搜索一个非索引列(没有预索引(谷歌确实预先索引我认为)),我正在使用MySQL LIKE。那么,在考虑提高绩效时,我应该怎么做呢?
使用MySQL,PHP。提前致谢
答案 0 :(得分:1)
以下是我所看到的一些问题......
通过在查询中使用限制5,您将始终显示查询找到的第一个或最后5个John(基于查询)..我会请求新用户通过电子邮件添加他们的前几个朋友(这是唯一的)或名字和姓氏(非独特)
一旦新用户拥有多个朋友,您就可以提供更好的搜索结果,并且可以避免向使用相同关键字/名称的所有人展示相同的人