**ストリーミング式**

ストリーミング式は、SolrCloudの機能を構成可能な関数として公開します。これらの関数は、SolrCloudコレクションに格納されているデータの検索、変換、分析、および視覚化のためのシステムを提供します。

ドキュメントでは、大きく分けて4つの主要な機能について説明します。

  • **検索**、Solrからの結果のサンプリングと集計。

  • Solrから取得された後、結果セットを**変換**します。

  • 確率と統計、および機械学習ライブラリを使用して結果セットを**分析**およびモデリングします。

  • 結果セット、集計、およびデータの統計モデルを**視覚化**します。

ストリーム言語の基礎

ストリーミング式は、Solrコレクションで動作するストリーミング関数で構成されます。 これらはタプルのストリーム(キー/値マップ)を出力します。

提供されているストリーミング関数の一部は、通常の検索のように上位N件の結果ではなく、結果セット全体を処理するように設計されています。これは、/exportハンドラによってサポートされています。

一部のストリーミング関数は、ストリームフローを開始するためのストリームソースとして機能します。 他のストリーミング関数は、他のストリーミング関数をラップし、タプルのストリームに対して操作を実行するストリームデコレータとして機能します。 多くのストリーム関数は、ワーカーコレクション全体で並列化できます。これは、関係代数関数にとって特に強力です。

ストリーミングリクエストとレスポンス

Solrには、ストリーミング式の要求を受け取り、タプルをJSONストリームとして返す/streamリクエストハンドラがあります。 このリクエストハンドラは暗黙的に定義されています。つまり、solrconfig.xmlで定義する必要があるものはありません。 暗黙的リクエストハンドラを参照してください。

/streamリクエストハンドラは、ストリーミング式を指定するために使用されるパラメータexprを1つ受け取ります。 たとえば、このcurlコマンドは、単純なsearch()式をエンコードして/streamハンドラにPOSTします。

curl --data-urlencode 'expr=search(enron_emails,
                                   q="from:1800flowers*",
                                   fl="from, to",
                                   sort="from asc")' https://127.0.0.1:8983/solr/enron_emails/stream

各関数の詳細なパラメータは以下に含まれています。

上記の例では、/streamハンドラは次のJSONレスポンスで応答しました。

{"result-set":{"docs":[
   {"from":"1800flowers.133139412@s2u2.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers.93690065@s2u2.com","to":"jtholt@ect.enron.com"},
   {"from":"1800flowers.96749439@s2u2.com","to":"alewis@enron.com"},
   {"from":"1800flowers@1800flowers.flonetwork.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@1800flowers.flonetwork.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@1800flowers.flonetwork.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@1800flowers.flonetwork.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@1800flowers.flonetwork.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"ebass@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"lcampbel@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"ebass@enron.com"},
   {"from":"1800flowers@shop2u.com","to":"ebass@enron.com"},
   {"EOF":true,"RESPONSE_TIME":33}]}
}

上記の例のストリームの最後のタプルは{"EOF":true,"RESPONSE_TIME":33}であることに注意してください。 EOFはストリームの終わりを示します。ストリーミング式は数百万レコードを持つ可能性のある結果セット全体を返すように設計されているため、JSONレスポンスを処理するには、ストリーミングJSON実装を使用する必要があります。JSONクライアントでは、各doc(タプル)を反復処理し、EOFタプルをチェックしてストリームの終わりを判断する必要があります。

設定

ストリーミング式のタイムアウトは、socketTimeoutおよびconnTimeout起動パラメータで設定できます。

言語の要素

ストリームソース

ストリームソースはストリームを生成します。検索、サンプリング、集約のための豊富なストリームソースから選択できます。

利用可能なすべてのソース式の完全なリファレンスは、ストリームソースリファレンスにあります。

ストリームデコレータ

ストリームデコレータは、ストリームソースと他のストリームデコレータをラップして、ストリームを変換します。

利用可能なすべてのデコレータ式の完全なリファレンスは、ストリームデコレータリファレンスにあります。

数式

数式は、ストリーミング式と組み合わせて分析を実行し、結果セットの数学的モデルを構築できるベクトルおよび行列の数学ライブラリです。言語の観点から、数式はタプルのストリームを返さないストリーミング式のサブ言語です。代わりに、数値、ベクトル、行列、および数学モデルを操作して返します。ドキュメントでは、ストリーミング式と数式を組み合わせる方法を示します。

数式のユーザーガイドは、<<>>にあります。

言語の観点から、数式はストリームエバリュエータと呼ばれます。

利用可能なすべてのエバリュエータ式の完全なリファレンスは、ストリームエバリュエータリファレンスにあります。

可視化

ストリーミング式と数式の両方の可視化は、Apache ZeppelinとZeppelin-Solrインタープリターを使用して行われます。

ストリーミング式の可視化とApache Zeppelinのセットアップについては、Zeppelin-Solrインタープリターに記載されています。

ストリーミング式と数式では、可視化手法について詳しく説明しています。

ストリーム画面

  • ストリーム画面:ストリーミング式を送信し、結果と解析の説明を確認します。