Сбой задания индексатора IOException при индексации основных данных в Solr Bluemix

Я пытаюсь проиндексировать данные о сканированном Nutch по Bluemix solr. Я использовал следующую команду в моей командной строке:

bin / nutch index -D solr.server.url = "https://gateway.watsonplatform.net/retrieve-and-rank/api/v1/solr_clusters/CLUSTER-ID/solr/admin/collections -D solr.auth = true -D solr.auth.username = "ИМЯ ПОЛЬЗОВАТЕЛЯ" -D solr.auth.password="PASS" Сканирование /crawldb -linkdb Сканирование /linkdb Сканирование / сегментов /2016*

Но не удается завершить индексацию. Результат выглядит следующим образом:

Indexer: starting at 2016-06-16 16:31:50
Indexer: deleting gone documents: false
Indexer: URL filtering: false
Indexer: URL normalizing: false
Active IndexWriters :
SolrIndexWriter
        solr.server.type : Type of SolrServer to communicate with (default 'http' however options include 'cloud', 'lb' and 'concurrent')
        solr.server.url : URL of the Solr instance (mandatory)
        solr.zookeeper.url : URL of the Zookeeper URL (mandatory if 'cloud' value for solr.server.type)
        solr.loadbalance.urls : Comma-separated string of Solr server strings to be used (madatory if 'lb' value for solr.server.type)
        solr.mapping.file : name of the mapping file for fields (default solrindex-mapping.xml)
        solr.commit.size : buffer size when sending to Solr (default 1000)
        solr.auth : use authentication (default false)
        solr.auth.username : username for authentication
        solr.auth.password : password for authentication
Indexing 153 documents
Indexing 153 documents
Indexer: java.io.IOException: Job failed!
        at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:836)
        at org.apache.nutch.indexer.IndexingJob.index(IndexingJob.java:145)
        at org.apache.nutch.indexer.IndexingJob.run(IndexingJob.java:222)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.nutch.indexer.IndexingJob.main(IndexingJob.java:231)

Я думаю, что это как-то связано с адресом solr.server.url, может быть, это конец. Я изменил это по-разному, например

" https://gateway.watsonplatform.net/retrieve-and-rank/api/v1/solr_clusters/CLUSTER-ID/solr/example_collection/update".

(поскольку он используется для индексации файлов JSON/CSV/... в Bluemix Solr). Но сейчас нет шансов.

Кто-нибудь знает, как я могу это исправить? И если проблема, как я догадался, кто-нибудь знает, каким именно должен быть solr.server.url? Кстати, "example_collection" - это название моей коллекции, и я работаю с NUTCH1.11.

2 ответа

Решение

Насколько я знаю, индексирование данных Nutch просканировалось в Bluemix R&R с помощью команды index, представленной в самом Nutch (индекс bin / nutch...), невозможно. Я понял, что для индексации просканированных данных Nutch в сервисах Bluemix Retrieve и Rank необходимо:

  1. Ползать семена с орехом, например

    $:bin/crawl -w 5 urls crawl 25

Вы можете проверить статус сканирования с помощью:

bin / nutch readdb crawl / crawldb / -stats

  1. Дамп выгруженных данных как файлы:

    $: bin / nutch dump -flatdir -outputDir dumpData / -сегмент сканирования / сегментов /

  2. Опубликуйте те, которые возможны, например, XML-файлы в Solr Collection при получении и ранжировании:

    Post_url = '"https://gateway.watsonplatform.net/retrieve-and-rank/api/v1/solr_clusters/%s/solr/%s/update"' %(solr_cluster_id, solr_collection_name)
    cmd ='''curl -X POST -H %s -u %s %s --data-binary @%s''' %(Cont_type_xml, solr_credentials, Post_url, myfilename)          
    subprocess.call(cmd,shell=True)
    
  3. Преобразуйте остальные в json с помощью службы Bluemix Doc-Conv:

    doc_conv_url = '"https://gateway.watsonplatform.net/document-conversion/api/v1/convert_document?version=2015-12-15"'
    cmd ='''curl -X POST -u %s -F config="{\\"conversion_target\\":\\"answer_units\\"}" -F file=@%s %s''' %(doc_conv_credentials, myfilename, doc_conv_url)
    process = subprocess.Popen(cmd, shell= True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    

    и затем сохраните эти результаты Json в файл JSON.

  4. Опубликовать этот файл JSON в коллекцию:

    Post_converted_url = '"https://gateway.watsonplatform.net/retrieve-and-rank/api/v1/solr_clusters/%s/solr/%s/update/json/docs?commit=true&split=/answer_units/id&f=id:/answer_units/id&f=title:/answer_units/title&f=body:/answer_units/content/text"' %(solr_cluster_id, solr_collection_name)
    cmd ='''curl -X POST -H %s -u %s %s --data-binary @%s''' %(Cont_type_json, solr_credentials, Post_converted_url, Path_jsonFile)
    subprocess.call(cmd,shell=True)
    
  5. Отправить запросы:

    pysolr_client = retrieve_and_rank.get_pysolr_client(solr_cluster_id, solr_collection_name)
    results = pysolr_client.search(Query_term)
    print(results.docs)
    

    Коды в питоне.

Для начинающих: Вы можете использовать команды curl прямо в CMD. Я надеюсь, что это помогает другим.

Как это:

nutch index -Dsolr.server.url=http://username:password@localhost:8983/solr/nutch crawl/crawldb/ -linkdb crawl/linkdb/ crawl/segments/20170816191100/ -filter -normalize -deleteGone 

оно работает.

Другие вопросы по тегам