这是一个大学项目:
我有一个数据库(mysql或postgresql没关系)有1000亿个帖子,我需要搜索(尽可能快)一个通用关键字。
每篇文章都有500-1000个关键字。
这不仅是数据库问题,还是软件(用于索引或其他)问题。
我该怎么做?
我可以使用一些先进的搜索引擎技术,但我不知道哪个。
答案 0 :(得分:13)
答案 1 :(得分:10)
他们将为您免费索引,您将赚钱。
答案 2 :(得分:5)
嗯,这个星球上有大约68亿人,每分钟可以阅读约1个帖子(平均而言)。
如果每个人都有所贡献,那么1000亿分红,除去68亿,所有帖子的阅读时间为14.7分钟。
所以:
1)征服地球
2)让每个人成为你的奴隶
3)阅读帖子。
4)???
5)利润!
答案 3 :(得分:4)
您可能想查看Sphinx。它是一个处理分布式索引的全文搜索引擎。您可以将部分数据分布在许多计算机上。查询单个服务器可以将查询发送到其他服务器,并从每个服务器收集结果。它的速度非常快,但你可能无法在一台机器上完成1000亿个帖子。
你可能无法在MySQL或Postgresql中做这样的事情。虽然您可以存储所有数据,但MySQL和Postgres缺少真正的全文索引将为您带来的全文索引和搜索速度。
MySQL有一种编译方式可以支持Sphinx存储引擎,虽然数据仍然存储在与MySQL不同的Sphinx中,但您仍然可以使用连接到MySQL的任何东西查询Sphinx搜索引擎,并执行连接到MySQL数据库中的其他表。但是,如果您只想对文档执行简单搜索,并且不需要加入其他数据,则可以使用本机PHP界面。
答案 4 :(得分:4)
尝试Sphinx http://sphinxsearch.com/
答案 5 :(得分:3)
您是否尝试过数据库的内置全文索引功能?你应该尝试一下,并在你认为它不适合并寻找别的东西之前证明它不起作用。
答案 6 :(得分:3)
使用Google自定义搜索。此外,您将获得一点点收入,并节省大量的托管资源。
答案 7 :(得分:1)
首先,我们是在单独的字段或帖子内容中讨论关键字吗?
如果是单独的字段,则可以。 只需构建一个包含关键字 - 帖子关系的表,并在SELECT post_id 7上进行简单搜索... WHERE keyword ='X'。
如果我们谈论的是全文索引,那么最好使用一些自定义索引软件,例如其他一些帖子中建议的。