【发布时间】:2013-04-07 05:29:15
【问题描述】:
这段代码有两部分: 一种将文档添加到要搜索的索引中的功能,效果很好,而 crawl() 函数是一种获取页面内容的网络爬虫,效果也很好。
但是,我需要从 crawl() 函数中添加一个文档。
当我在 crawl() 函数中移动添加文档的代码时,我得到一个致命错误: 致命错误:在非对象上调用成员函数 addDocument()。
我想知道如何从爬取函数内部访问成员函数 addDocument()?
现在,我有一个工作版本,其中 crawl() 函数以变量的形式返回它已爬取的内容,然后在 crawl() 函数之外的 addDocument 代码也可以访问返回的变量并添加以这种方式将文档添加到索引中。 但是,只有(逻辑上)我在抓取一个页面或没有链接的页面时才有效。由于该函数仅在完成后才返回,并且由于它是递归地跟随页面的链接,因此它将返回的唯一内容是最后一页的内容。 我需要将每个页面的内容作为新文档添加到索引中。
这是上面描述的工作代码,尽可能多地评论:http://pastebin.com/5ngcucDp
这是我尝试在 crawl() 函数中移动 addDocument() 的非工作代码:http://pastebin.com/mUEwQJTG
如果您有一个解决方案涉及如何从 crawl() 函数内部访问 addDocument() 函数,请分享。 或者,如果您有涉及修改工作代码的解决方案,以便它返回所抓取的每个页面的内容而不是最后一页,请分享。
如果您有任何解决方案,请分享,因为我已经筋疲力尽并且已经尝试了我所知道的一切。
【问题讨论】:
标签: php search-engine web-crawler