如何在linkedin或fb中搜索?

时间:2013-05-30 07:22:48

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

我需要实现Linked in或facebook提供的类似搜索功能。如果您在fb中使用新的图形搜索,当您在搜索文本上键入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

我说错了吗?或任何其他方式我们能够实现这一目标?\

修改 我在链接中检查了相同的内容。也有类似的搜索。请查看附件图片。 enter image description here

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

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

以下是一些基本指导方针:

  1. Trie数据结构在搜索前缀方面非常有效。翻过前缀的路线,然后从那里做DFS可以给你字典中所有带有相同前缀的单词。

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

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

答案 1 :(得分:0)

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