このコードには 2 つの部分があります。1 つは検索対象のインデックスにドキュメントを追加するもので、問題なく動作します。もう 1 つは、ページのコンテンツを取得する Web クローラーであり、これも問題なく動作します。
ただし、crawl() 関数内からドキュメントを追加する必要があります。
文書を追加するコードをcrawl()関数内に移動すると、Fatal Error: Fatal Error: call to member function addDocument() on a non-object. が発生します。
クロール関数内からメンバー関数 addDocument() にアクセスするにはどうすればよいですか?
現在、クロール()関数がクロールしたものを変数の形式で返す作業バージョンがあり、次に、クロール()関数の外側のaddDocumentコードも返された変数にアクセスし、ドキュメントをに追加しますインデックスはそのまま。しかし、それは (論理的に) 1 つのページまたはたどるリンクがないページをクロールしている場合にのみ機能します。この関数は完了時にのみ戻り、ページのリンクをたどるのは再帰的であるため、返される唯一のコンテンツは最後のページのコンテンツです。各ページのコンテンツを新しいドキュメントとしてインデックスに追加する必要がある場合。
上記の作業コードは次のとおりです。
そして、addDocument()をcraw()関数内に移動しようとする非動作コードは次のとおりです: http://pastebin.com/mUEwQJTG
crawl() 関数内から addDocument() 関数にアクセスする方法に関する解決策がある場合は、共有してください。または、最後のページではなくクロールする各ページのコンテンツを返すように作業コードを変更することを含むソリューションがある場合は、共有してください.
解決策がある場合は、私が完全に疲れ果てており、知っていることはすべて試したので共有してください.