我目前在社交网站工作。
我的老板最近有想法通过随机而非正常结果(注册日期)显示搜索结果。问题很简单明了:如果你从一个页面转到另一个页面,每次都会随机化列表,每次都会显示不同的结果。
我有想法将结果存储在数据库+ cookie中,如下所示:
_id, creation
_日期)_results (search_id, order, user
_ id)的流程图看起来像这样:
这里存在一个很大的缺陷:表现......它绝对有可能使系统向下或非常慢。
知道最好的结构是什么?
答案 0 :(得分:1)
如果不是随机排序,而是通过某些功能订购,其中订单已知并且可重复,只是不明显?您可以使用搜索查询中的一些数据来播种此类函数,以使其重复更加明显。通过这种方式,您可以在结果中来回寻找并始终获得您期望的结果。音乐播放器使用这种功能来实现其随机播放功能(如果您单击后退,则会获得上一首歌曲,如果您再次单击,则会返回到您开始的位置)。我相信你可以通过一些函数来实现这个... bitwise XORing带有一些常量(来自查询)的ID值,然后按结果数排序可能就足够了。我任意选择XOR,因为它是一个简单的简单函数,可以让你获得可重复和非显而易见的结果。
答案 1 :(得分:0)
嗯可能,但是xor运算符不会说它是否是OR独占?我的意思是,据我所知,这里没有数学运算。
答案 2 :(得分:0)
抱歉,我知道这没有帮助,但我不明白为什么你的老板想要这个?
我知道如果我在社交网络上搜索某个人,那么我希望结果仅按相关性和相关性排序。我认为随机结果对用户来说只是令人沮丧,但也许只是我。
例如,如果我搜索“John Smith”,那么第一批第一批结果最好是名为“John Smith”的人。然后在结果的末尾显示类似的名字。我不想搜索“John Smith”并将“Jon Smithers”作为我的第二个结果。
答案 3 :(得分:0)
好吧,我和Matt在问“为什么?”
我认为rmeador也有一个很好的建议。您可以通过不同的字段或某种算法随机排序。仅仅是DESC / ASC在上次更新或其他结果字段中的排列。
其他选项是首次进行初始搜索并仅返回相关ID,然后将完整ID的字符串存储在数据库中,然后每个后续页面都会查找这些ID。
我的两分钱。
我可以看到一个场景,其中随机化结果集非常有用,但不适用于搜索,但适用于浏览个人资料或艺术家或本地事件。它提供了更多接触传统定向搜索中不会出现的内容。