【问题标题】:How search in linked in or in fb works?链接中或 fb 中的搜索如何工作?
【发布时间】:2013-05-25 16:19:09
【问题描述】:

我需要实现 Linked in 或 facebook 提供的类似搜索功能。如果您在 fb 中使用新的 Graph 搜索,当您在搜索文本上键入 L 时,它会建议一些用户的名称中带有 L,地点带有 L,页面带有 L 等等。那么这种搜索是如何实现的。

我相信可能有一个表可以存储整个数据的副本。

类似

TypeID - Text         - ID for the corresponding table
User   - Laurence     - 1
User   - Elis Lowman  - 2
Pages  - Lexus        - 4
Pages  - Lux          - 1
Place  - Las Vegas    - 6
Place  - Lebonan      - 8

我说的对吗?或任何其他我们可以实现这一目标的方式?\

编辑 我在链接的 In 中检查了相同的内容。也有类似的搜索。请检查所附图像。

提前感谢您的帮助。

【问题讨论】:

  • 你是在问怎么做?还是它是如何在FB上实现的?无论如何,我非常怀疑有人会使用SQL为它。
  • @amit 我需要实现或实现类似的功能。有人可以提供一些信息会很棒

标签: sql-server algorithm search full-text-search search-engine


【解决方案1】:

我不知道它是如何在 FaceBook 上实现的,但我会给出一个一般性的答案。

首先请注意,您正在寻找在信息检索字段中称为查询自动完成的内容。

以下是一些基本指南:

  1. Trie 数据结构在搜索前缀方面非常有效。遍历前缀的路径,然后从那里执行DFS 可以为您提供字典中具有相同前缀的所有单词。

  2. 但是,它会给你一个巨大的 - 大部分不相关的术语列表,服务器想要给用户最好的建议,而不是所有的建议。常用的方法是使用查询日志。更频繁的查询更有可能是用户正在寻找的内容。因此,搜索引擎保存了查询和前缀的缓存,并使用它为客户提供他最可能想要的页面。

  3. 对最佳自动补全的探索还远未结束,在过去的几年里,已经进行了许多关于它的工作。例如,我发现 Naama Kraus 和 Ziv Bar Yosef 的作品:Context Sensitive Query Auto Completion 非常有趣。这个想法不是只使用查询日志的一般知识 - 还要使用用户的数据,在这种情况下 - 您正在使用他的最后一个查询 - 因为新查询很可能与他的最后一个查询有关。

【讨论】:

  • 感谢您的建议。在我们的例子中,用户可能正在搜索一些信息,可以是唯一键或名称。如果是唯一键,我们需要显示完全匹配。但是在用户使用文本值搜索的情况下,我们需要显示不同的选项。
【解决方案2】:

数据库和开源包(例如 Lucene 和 Sphinx Search)允许使用通配符关键字进行前缀搜索。他们的速度和结果质量各不相同。还有专门为此类搜索查询设计的商业包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多