2

我已阅读http://en.wikipedia.org/wiki/PageRank中的解释,并且我了解页面排名是通过传入链接和传出链接计算的。

我在爬取网页并存储在数据库中时有一个爬虫,我需要一个页面排名算法。我有一个具有以下值的数据库

Title 
url
content_html
outgoing_links(external domain)
internal_links(the links with  same domain of the url)

你能解释一下我需要任何其他值来计算页面排名吗?请解释如何使用java计算它

4

2 回答 2

1

PageRank 本质上是一个线性代数特征值问题:

http://www.rose-hulman.edu/~bryan/googleFinalVersionFixed.pdf

如果你不知道线性代数或特征值问题,或者不愿意阅读这篇论文,你就不太可能解决这个问题。正如爱因斯坦所说,“让问题尽可能简单,但不要更简单......”

论文的标题是旧的;它指的是 2004 年左右的谷歌市值。今天早上高达 $211B。

在那段时间里,这项技术并没有停滞不前。谷歌继续以专有方式调整算法。但这篇论文解释了它的核心。

于 2012-03-27T14:09:17.800 回答
0

你有几个选择。如果你想自己做这一切,那么 duffymo 的解决方案是完美的,但如果你想使用现有的库,我会建议类似于Jung的图表。

我不确定您是否熟悉图表,但它们可用于存储链接的结构,并且 pagerank 通常包含在大多数库中。根据您的操作方式,Jung是一个很好的内存解决方案,但是如果您需要持久的数据库存储,那么将数据加载到Neo4J 中就可以了(您必须安装gremlin才能进行 pagerank)。

以上是 Java 解决方案,但如果您想自己动手(并且像我一样不喜欢枯燥的研究论文),那么我强烈建议您阅读《编程集体智慧》这本书。他们经历了(第 4 章?我认为)从头开始创建一个搜索引擎,其中包括 pagerank 和神经网络来监控点击。根据您的上述要求,唯一的问题是这本书是用 python 编写的,但您可以轻松地将逻辑应用于 java。如果您已经了解一点 python,那么您甚至可以免费下载书籍源代码并查看软件(但源代码中代码背后的数学没有解释)。

希望有帮助

于 2012-03-27T14:28:02.413 回答