这是一个大学项目:
我有一个数据库( mysql或postgresql无关紧要),有1000亿个帖子,我需要(尽可能快地)搜索一个通用关键字。
每篇文章都有500-1000个关键词。
这不仅是一个数据库问题,也是一个软件(用于索引或其他)问题。
我该怎么做呢?
我可以使用一些先进的搜索引擎技术,但我不知道是哪种。
发布于 2010-09-04 20:03:48
你可能想看看Sphinx。这是一个处理分布式索引的全文搜索引擎。您可以将部分数据分散到多台计算机上。查询单个服务器可以将查询发送到其他服务器,并从每个服务器收集结果。它有相当好的速度,但你可能不能在一台机器上处理1000亿篇帖子。
你可能无法在MySQL或Postgresql中做这样的事情。虽然您可以存储所有数据,但MySQL和Postgres缺乏真正的全文索引将为您带来的全文索引和搜索速度。
MySQL有一种编译方法来支持Sphinx存储引擎,尽管数据仍然存储在独立于MySQL的Sphinx中,但是您仍然可以使用任何连接到MySQL的东西来查询Sphinx搜索引擎,还可以连接到MySQL数据库中的其他表。但是,如果您只想对文档执行简单的搜索,而不需要连接到其他数据,则可以只使用原生PHP界面。
发布于 2010-09-04 20:05:22
你有没有考虑过使用Apache Lucene?
这不能直接与您的SQL数据库一起工作,您必须编写一些代码来将文档提供给它,以便构建和索引,然后您可以查询。
然而,我不知道这需要多少额外的空间,以及需要多少时间。
发布于 2010-09-04 20:33:42
把“千亿”的帖子数据卖给谷歌。:)
他们会给你免费的索引,这样你就能赚钱了。
https://stackoverflow.com/questions/3642148
复制相似问题