标题可能有点误导,但我想不出更好的标题。我正在编写一个简单的搜索引擎,它将在几个站点上搜索特定的域。具体而言:我正在为硬风格的livesets/售后电影/曲目编写搜索引擎。为了做到这一点,我将搜索那些提供生命、轨道等等的网站。这里的问题是速度,我需要将搜索查询传递到5-7个站点,得到结果,然后使用自己的算法按排序顺序显示结果。我可以只是“多线程”,但说起来容易,然后做,所以我有几个问题。
谢谢,
威廉·范多恩
发布于 2010-06-18 14:37:56
除非您正在尝试学习多线程,否则不要自己编写这方面的基础结构。同步许多任务,可能需要不同的时间,处理故障等,这是一个混乱。
对于大部分可并行的任务(例如查询多个站点、组合结果等),您可能需要查看现有的基础结构。
Map/reduce框架(如Hadoop )可以为您处理其中的一些问题,从而使您能够专注于应用程序的逻辑。
发布于 2010-06-18 14:45:58
在搜索引擎的具体情况下,我建议您查看Solr或Lucene。对于5-7个站点来说,Hadoop可能会过度杀戮。增量索引是可能的,还可以向每个可搜索的事物添加特定的元数据。
我可以想象,这些站点也会在RSS提要中发布大量内容,您可以使用RSS提要来保持索引的更新速度,而不是不断地爬行它们。
搜索引擎本身允许所有有趣的方式,使你的结果得到惊人的快速后处理或立即显示给你的用户。
对于并行化,JSR-166y包(java.util.concurrent)中有很好的支持,如果您坚持建议的模式之一,就可以不让人头疼地进行并行化。它们真的很好用。
只是一些想法。
发布于 2010-06-18 14:39:33
使用谷歌?)
瓶颈将是下载信息,多线程将有所帮助。
否则,只下载html。
https://stackoverflow.com/questions/3070502
复制相似问题