1

Nutch クロールされたデータを Bluemix solr で索引付けしようとしていますが、それを行う方法が見つかりません。私の主な質問は次のとおりです。そうするのを手伝ってくれる人はいますか? ナッチ クロールしたデータの結果を Blumix Solr に送信するにはどうすればよいですか。クロールには Nutch 1.11 を使用しましたが、これまでに行ったことと直面した問題の一部を以下に示します。2 つの解決策があると思いました。

  1. ナットコマンドで:

「NUTCH_PATH/bin/nutch インデックス クロール/crawldb -linkdb クロール/linkdb クロール/ -Dsolr.server.url="OURSOLRURL"」</p>

OURSOLR によって、nutch のクロールされたデータをインデックス化できます。しかし、私はそれにいくつかの問題を発見しました。

a-奇妙に聞こえるかもしれませんが、URL を受け入れることができませんでした。代わりに URL のエンコードを使用して処理できます。

b-特定のユーザー名とパスワードに接続する必要があるため、nutch が solr に接続できませんでした。これを考慮して:

 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

コマンドライン出力で、コマンド「solr.auth = true solr.auth.username = "SOLR-UserName" solr.auth.password = "Pass"」の認証パラメーターを使用して、この問題を管理しようとしました。

したがって、これまでのところ、このコマンドを使用する必要があります。

」bin/nutch インデックス クロール/crawldb -linkdb クロール/linkdb クロール/セグメント/2016* solr.server.url="https%3A%2F%2Fgateway.watsonplatform.net%2Fretrieve-and-rank%2Fapi%2Fv1%2Fsolr_clusters% 2FCLUSTER-ID%2Fsolr%2Fadmin%2Fcollections" solr.auth=true solr.auth.username="ユーザー名" solr.auth.password="PASS"".

しかし、何らかの理由で、このコマンドは認証パラメーターをクロールされたデータ ディレクトリと見なし、機能しません。だから、「Active IndexWriters」への正しい方法ではないと思いますが、どうすればいいですか??

  1. curl コマンドで:

“curl -X POST -H "Content-Type: application/json" -u "BLUEMIXSOLR-USERNAME":"BLUEMIXSOLR-PASS" " https://gateway.watsonplatform.net/retrieve-and-rank/api/v1/ solr_clusters/CLUSTERS-ID/solr/example_collection/update " --data-binary @{/path_to_file}/FILE.json"</p>

このコマンドで作成されたjsonファイルをフィードできるのではないかと思いました:

bin/nutch commoncrawldump -outputDir finalcrawlResult/ -segment crawl/segments -gzip -extension json -SimpleDateFormat -epochFilename -jsonArray -reverseKey しかし、ここにはいくつかの問題があります。

を。このコマンドは、複雑なパスで非常に多くのファイルを提供するため、それらすべてを手動で投稿するには非常に時間がかかります。1 つのコマンドだけで、ディレクトリとそのサブディレクトリ内のすべてのファイルを一度に POST する方法はありますか??

b. commoncrawldump で作成された json ファイルの先頭に "ÙÙ÷yœ" という奇妙な名前があります。

c. 私は奇妙な名前を削除し、これらのファイルの 1 つだけを POST しようとしましたが、結果は次のとおりです。

 {"responseHeader":{"status":400,"QTime":23},"error":{"metadata":["error-class","org.apache.solr.common.SolrException","root-error-class","org.apache.solr.common.SolrException"],"msg":"Unknown command 'url' at [9]","code":400}}

これらのファイルは Bluemix solr にフィードできず、すべて役に立たないということですか?

4

2 に答える 2

0

Lewis John Mcgibbney のおかげで、index ツールは次のように使用する必要があることに気付きました。

bin/nutch インデックス -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="USERNAME" -D solr.auth.password="PASS" クロール/crawldb -linkdb クロール/linkdb クロール/セグメント/2016*

手段: 各 auth-parameters の前に -D を使用し、ツール引数の前にこれらのパラメーターを記述します。

于 2016-06-16T20:54:25.347 に答える
0

Bluemix Retrieve and Rank サービスで、nutch がクロールしたデータのインデックスを作成するには、次のことを行う必要があります。

  1. ナッツなどで種を這う

    $:bin/crawl -w 5 URL クロール 25

クロールのステータスは次の方法で確認できます。

ビン/ナット readdb クロール/crawldb/ -stats

  1. クロールされた dataas ファイルをダンプしました:

    $:bin/nutch dump -flatdir -outputDir dumpData/ -segment crawl/segments/

  2. xml ファイルなど、可能なものを取得とランクの solr コレクションに投稿しました。

    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. Bluemix Doc-Conv サービスを使用して、残りを json に変換しました。

    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 ファイルに保存します。

  1. この 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)
    
  2. クエリを送信:

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

コードは python です。初心者向け: CMD で直接 curl コマンドを使用できます。お役に立てば幸いです

于 2016-07-19T02:05:36.980 に答える