Database design FaceBook搜索:它的技术要求和创新功能有哪些值得关注?

Database design FaceBook搜索:它的技术要求和创新功能有哪些值得关注?,database-design,full-text-search,solr,normalization,batch-processing,Database Design,Full Text Search,Solr,Normalization,Batch Processing,Facebook在他们的搜索引擎中加入了一些独特的功能——甚至可能有些是专利?我提到的功能由三个不同的需求驱动: 事实上,他们的数据库是巨大的,他们不能像你一样,在一个只有不到100万条记录的单一家用商业应用程序中,按照自己的需要连接到所需的数据 用户的期望值受其他搜索体验(即谷歌)的影响,因此长尾搜索查询是通过在被搜索人的姓名后添加关键词来完成的,如“奥兰多,佛罗里达”或“扶轮社”(或其他一些识别值,如雇主姓名) 基于我们从应用程序中查看的窗口,数据体系结构看起来很浅(当然不是浅)。我想说的是

Facebook在他们的搜索引擎中加入了一些独特的功能——甚至可能有些是专利?我提到的功能由三个不同的需求驱动:

  • 事实上,他们的数据库是巨大的,他们不能像你一样,在一个只有不到100万条记录的单一家用商业应用程序中,按照自己的需要连接到所需的数据
  • 用户的期望值受其他搜索体验(即谷歌)的影响,因此长尾搜索查询是通过在被搜索人的姓名后添加关键词来完成的,如“奥兰多,佛罗里达”或“扶轮社”(或其他一些识别值,如雇主姓名)
  • 基于我们从应用程序中查看的窗口,数据体系结构看起来很浅(当然不是浅)。我想说的是,除了用户配置文件中所谓的“基本信息”,如性别和当前城市,配置文件的许多独特之处并没有严格地分配给逻辑列
  • 因此,复杂性存在于与数据集大小相关的需求中,但同时也需要向用户提供相关的结果,向不擅长搜索的用户社区提供结果,但谷歌提供了他们的期望和培训

    考虑到所有这些(对我的问题进行了细化):

    a、 )我们应该注意并在我们自己的搜索应用程序/引擎中部署哪些FaceBook必需的搜索功能?所谓必需,我的意思是由庞大的数据集驱动,或者由用户的期望驱动,网站需要有机地增长,增加数据之间的关系——我是说,用户之间的关系

    b、 )哪些搜索功能具有创新性,值得数据和/或搜索架构师关注?

    有些是显而易见的,比如使用名字的同义词——模糊匹配“Bill”查询和“William”记录。您可以在Solr中使用同义词列表来完成此操作。我认为这是一个基本的功能,是必要的,当然不是创新的

    其他具有创新性的问题值得我们关注。我可以提请注意的第一个创新示例是,它们的搜索相关性是每个用户的自定义。如果我输入“John Smith”,我会得到与其他搜索者不同的结果集(理论上,对我、我的人际网络中的人、朋友的朋友等来说,匹配更好)。在你说这不是创新,因为你可以在谷歌中键入“Pizza”,他们会通过将你的区域设置附加到查询中给你相关的结果之前,请跟随。我希望对这个问题的回答和讨论能够包含在一些技术要求中,并提供一些在搜索中包含为特性的想法

    例如

    • 你猜他们会运行一个常规的批处理过程来反规范化数据吗?(即,制作就地一级分离、二级分离等链接表的批处理作业)
    • 从这样的批处理或非规范化中,它是否会限制命中数?仅返回逻辑上最接近的“John Smith”匹配即可证明这一点。然而,对非普通姓名(如我自己的名字和姓氏)的搜索似乎不受结果限制的影响,搜索将环顾世界,完全不受“几度”的分离影响
    • 他们是否在按年龄增加相关性得分,从而使搜索者与接近同一年龄组的匹配具有更大的相关性?(评论:似乎他们应该这样做,这可能至少是一个不应该发生的代际交流/会议的小减速——委婉地说,我知道)
    从技术上讲,在后端,是否最好在数据库级别执行非规范化过程,然后对“文档”进行索引?(澄清:对于那些统一用于企业搜索的文档,“文档”在概念上与数据库记录类似…MOL)

    或者,没有数据库非规范化。取而代之的是,编写搜索索引的过程包括在每个“文档”中写入相关信息以及“在网络中”或仅相隔几度的人

    当然有必要对这些信息进行预处理。我自己在实践中没有做过这件事,但在我看来,在数据库级别批量反规范化是有利的,因为搜索服务器擅长超快速查找信息,但数据库服务器更擅长获取匹配数据(假设它扩展到不在搜索索引中的相关列)

    因此,扩展搜索相关性依赖于用户搜索者的概念,注意它也是用户最近浏览活动的衍生。例如,搜索“John Smith Orlando”可能永远不会产生“正确”的John Smith,但在访问正确的John Smith的FaceBook页面之后(假设您在电子邮件中获得了他的URL),即使没有将John Smith添加为好友,这次对John Smith的后续搜索也会在下一次返回该结果。[我想知道它会过期多久,或者是否完全过期?]

    我在这里以Facebook为例,因为它们非常庞大。它们的大小迫使人们建立一个经过深思熟虑的体系结构——比如什么保持在它的正常形式,什么不能,因为你不能重复地
    连接
    一个1亿条记录表(从一个链接表的另一个“分叉”重新连接同一个人表,或者从另一个“分叉”重新连接可以产生“朋友之友”效应)

    相关性调整的实践几乎是一门艺术。数据集、业务规则和用户期望都是独一无二的,因此几乎不可能创建多用途评分模板,甚至是最佳实践

    也就是说,通过寻找那些搜索性能足够好的大型网站,