Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Crawler4j Solr中指导搜索深度_Java_Solr_Crawler4j - Fatal编程技术网

Java 在Crawler4j Solr中指导搜索深度

Java 在Crawler4j Solr中指导搜索深度,java,solr,crawler4j,Java,Solr,Crawler4j,我试图使爬虫“中止”搜索某一子域,每次它没有找到一个相关的网页后,连续3次尝试。提取页面的标题和文本后,我开始寻找要提交到solr集合的正确页面。(我不想添加与此查询不匹配的页面) 我的问题是,如何编辑此代码的最后一行,以便检索父“页面对象”并删除其传出URL,以便爬网移动到其余子域。 目前,我找不到一个函数可以将我从父id转到页面数据,用于删除URL。调用visit(…)方法是processPage(…)(WebCrawler中的第523行)的最后语句之一 传出链接已添加到爬虫程序的边界(并且

我试图使爬虫“中止”搜索某一子域,每次它没有找到一个相关的网页后,连续3次尝试。提取页面的标题和文本后,我开始寻找要提交到solr集合的正确页面。(我不想添加与此查询不匹配的页面)

我的问题是,如何编辑此代码的最后一行,以便检索父“页面对象”并删除其传出URL,以便爬网移动到其余子域。 目前,我找不到一个函数可以将我从父id转到页面数据,用于删除URL。

调用
visit(…)
方法是
processPage(…)
(WebCrawler中的第523行)的最后语句之一

传出链接已添加到爬虫程序的
边界
(并且可能在添加后由其他爬虫程序进程处理)

您可以通过调整爬虫程序的
shouldVisit(…)
shouldFollowLinksIn(…)
中(取决于具体的用例)来定义所描述的行为

public void visit(Page page)
{
    int docid = page.getWebURL().getDocid();
    String url = page.getWebURL().getURL();
    String domain = page.getWebURL().getDomain();
    String path = page.getWebURL().getPath();
    String subDomain = page.getWebURL().getSubDomain();
    String parentUrl = page.getWebURL().getParentUrl();
    String anchor = page.getWebURL().getAnchor();

    System.out.println("Docid: " + docid);
    System.out.println("URL: " + url);
    System.out.println("Domain: '" + domain + "'");
    System.out.println("Sub-domain: '" + subDomain + "'");
    System.out.println("Path: '" + path + "'");
    System.out.println("Parent page: " + parentUrl);
    System.out.println("Anchor text: " + anchor);
    System.out.println("ContentType: " + page.getContentType());

    if(page.getParseData() instanceof HtmlParseData) {
        String title, text;

        HtmlParseData theHtmlParseData = (HtmlParseData) page.getParseData();
        title = theHtmlParseData.getTitle();
        text = theHtmlParseData.getText();

        if (  (title.toLowerCase().contains(" word1 ") && title.toLowerCase().contains(" word2 "))  ||  (text.toLowerCase().contains(" word1 ") && text.toLowerCase().contains(" word2 ")) ) {
            //
            // submit to SOLR server
            //
            submit(page);

            Header[] responseHeaders = page.getFetchResponseHeaders();
            if (responseHeaders != null) {
                System.out.println("Response headers:");
                for (Header header : responseHeaders) {
                    System.out.println("\t" + header.getName() + ": " + header.getValue());
                }
            }

            failedcounter = 0;// we start counting for 3 consecutive pages

        } else {

            failedcounter++;

        }

        if (failedcounter == 3) {

            failedcounter = 0; // we start counting for 3 consecutive pages
            int parent = page.getWebURL().getParentDocid();
            parent....HtmlParseData.setOutgoingUrls(null);

        }