ストリームソースリファレンス
search
search
関数は、SolrCloud コレクションを検索し、クエリに一致するタプルのストリームを出力します。これは、標準の Solr クエリと非常によく似ており、同じパラメータの多くを使用します。
この式では、qt
パラメータを使用してリクエストハンドラを指定できます。デフォルトでは、/select
ハンドラが使用されます。/select
ハンドラは、式の簡単な迅速なプロトタイプ作成に使用できます。ただし、本番環境では、ほとんどの場合、結果セット全体を sort
および export
するように設計された /export
ハンドラを使用することをお勧めします。/export
ハンドラは、/select
ハンドラよりも厳しい要件があるため、デフォルトでは使用されません。そのため、作業を開始するのが簡単ではありません。/export
ハンドラの要件の詳細については、「結果セットのエクスポート」セクションを確認してください。
search パラメータ
-
collection
: (必須) 検索するコレクション。 -
q
: (必須) Solr インデックスに対して実行するクエリ。 -
fl
: (必須) 返すフィールドのリスト。 -
sort
: (必須) ソート条件。 -
zkHost
: 検索するコレクションがローカルストリームハンドラとは異なる zkHost にある場合にのみ定義する必要があります。Zookeeper の認証情報と ACL は、接続している Solr インスタンスと同じ ZkHost が使用されている場合にのみ含まれます (chroot
は異なる場合があります)。 -
qt
: 使用するクエリタイプ、またはリクエストハンドラを指定します。大きな結果セットを処理する場合は、これを/export
に設定します。デフォルトは/select
です。 -
rows
: (/select
ハンドラの場合は必須) rows パラメータは、返す行数を指定します。このパラメータは、/export
ハンドラは常にすべての行を返すため、/select
ハンドラ (デフォルト) でのみ必要です。 -
partitionKeys
: 検索結果をパーティション分割するためのキーのコンマ区切りリスト。ワーカーノード全体で操作を並列化するための parallel 関数で使用します。詳細については、parallel 関数を参照してください。
drill
drill
関数は、効率的な高カーディナリティ集計をサポートするように設計されています。drill
関数は、ソートされた結果セットに export
ハンドラが適用するストリーミング式を含む特定のコレクション内の export
ハンドラにリクエストを送信します。export
ハンドラは、集計されたタプルを出力します。drill
関数は、ソート順序を維持しながら、各シャードから集計されたタプルを読み取って出力しますが、集計をマージしません。ストリーミング式関数を drill
関数の周りにラップして、集計をマージできます。
drill パラメータ
-
collection
: (必須) 検索するコレクション。 -
q
: (必須) Solr インデックスに対して実行するクエリ。 -
fl
: (必須) 返すフィールドのリスト。 -
sort
: (必須) ソート条件。 -
expr
: ソートされた結果セットで動作する export ハンドラに送信されるストリーミング式。input()
関数は、export ハンドラからのソートされたタプルのストリームを提供します (以下の例を参照)。
drill 構文
例 1:基本的な drill 構文
drill(articles,
q="abstract:water",
fl="author",
sort="author asc",
rollup(input(), over="author", count(*)))
例 2:各シャードから出力されたカウントを合計するために drill
関数の周りにラップされた rollup
。
rollup(drill(articles,
q="abstract:water",
fl="author",
sort="author asc",
rollup(input(), over="author", count(*))),
over="author",
sum(count(*)))
facet
facet
関数は、バケットを集計した結果を提供します。内部的には、facet
関数はSolrのJSON Facet APIを使用して集計を検索エンジンにプッシュダウンします。これにより、多くのユースケースでサブ秒のパフォーマンスが得られます。facet
関数は、バケットフィールド内の個別の値が少ない〜中程度の数である場合の使用に適しています。カーディナリティの高い集計をサポートするには、rollup
関数を参照してください。
facet パラメータ
-
collection
: (必須) ファセットが集計されるコレクション。 -
q
: (必須) 集計の構築に使用するクエリ。 -
buckets
: (必須) ロールアップ対象のフィールドのカンマ区切りリスト。カンマ区切りリストは、多次元ロールアップの次元を表します。 -
bucketSorts
: (必須)buckets
パラメータの各次元に適用するソートのカンマ区切りリスト。ソートは、計算されたメトリックまたはバケット値に対して行うことができます。 -
rows
: (デフォルト 10) 返される行数。'-1'を指定すると、すべての行が返されます。 -
offset
: (デフォルト 0) 結果セットの開始オフセット。 -
overfetch
: (デフォルト 150) オーバーフェッチは、カーディナリティの高いフィールドに対して正確な集計を提供するために使用されます。 -
method
: JSON Facet APIの集計メソッド。 -
bucketSizeLimit
: フェッチする行数の絶対数を設定します。これは、rows
、offset
、overfetch
とは互換性がありません。この値は、各次元に適用されます。'-1'を指定すると、すべてのバケットがフェッチされます。 -
metrics
: バケットに対して計算するメトリックのリスト。現在サポートされているメトリックは、sum(col)
、avg(col)
、min(col)
、max(col)
、count(*)
、countDist(col)
、std(col)
、per(col, 50)
です。per
メトリックは数値列のパーセンタイルを計算し、同じfacet
関数内で複数回指定できます。 -
tiered
: (デフォルト true)facet
ストリームがplist
式を使用して複数のSolrコレクションへのJSON Facetリクエストを並列化するかどうかを制御するフラグ。このオプションは、collection
が複数のコレクションによってバックアップされたエイリアスである場合にのみ適用されます。tiered
が有効な場合、内部的にrollup
式を使用して、複数のfacet
式からのメトリックを単一の結果に集計します。count
、min
、max
、sum
、avg
メトリックのみがサポートされています。クライアントアプリケーションは、solr.facet.stream.tiered=false
システムプロパティを設定することで、これをグローバルに無効にできます。
facet 構文
例 1
facet(collection1,
q="*:*",
buckets="a_s",
bucketSorts="sum(a_i) desc",
rows=100,
sum(a_i),
sum(a_f),
min(a_i),
min(a_f),
max(a_i),
max(a_f),
avg(a_i),
avg(a_f),
std(a_f),
per(a_f, 50),
per(a_f, 75),
count(*))
上記の例は、単一のバケットに対してロールアップを行うfacet
関数を示しています。バケットは、計算されたsum(a_i)
メトリックの値によって降順に返されます。
例 2
facet(collection1,
q="*:*",
buckets="year_i, month_i, day_i",
bucketSorts="year_i desc, month_i desc, day_i desc",
rows=10,
offset=20,
sum(a_i),
sum(a_f),
min(a_i),
min(a_f),
max(a_i),
max(a_f),
avg(a_i),
avg(a_f),
std(a_f),
per(a_f, 50),
per(a_f, 75),
count(*))
上記の例は、3つのバケットに対してロールアップを行うfacet
関数を示しています。バケットは、バケット値によって降順に返されます。rows
パラメータは10行を返し、offset
パラメータは20行目から行の返却を開始します。
features
features
関数は、SolrCloudコレクションに保存されている分類トレーニングセットのテキストフィールドからキーとなる用語を抽出します。トレーニングセットから重要な用語を選択するために、情報ゲインとして知られるアルゴリズムを使用します。features
関数は、抽出された特徴を使用してテキスト分類器をトレーニングするtrain関数と連携するように設計されています。
features
関数は、クラスの肯定的および否定的な両方の例を提供するトレーニングセットで動作するように設計されています。トレーニングセットにおける用語の逆文書頻度(IDF)とともに抽出される各特徴用語に対してタプルを出力します。
features
関数は、クエリを使用してコレクションからトレーニングセットを選択します。選択された各特徴のIDFは、クエリに一致するトレーニングセットに対して計算されます。これにより、複数のトレーニングセットを同じSolrCloudコレクションに保存し、トレーニングセット間でIDFが汚染されるのを防ぐことができます。
features パラメータ
-
collection
: (必須) トレーニングセットを保持するコレクション。 -
q
: (必須) トレーニングセットを定義するクエリ。特徴のIDFは、クエリに一致する結果セットに固有に生成されます。 -
featureSet
: (必須) 特徴セットの名前。SolrCloudコレクションに保存されている場合、特徴を取得するために使用できます。 -
field
: (必須) 特徴を抽出するテキストフィールド。 -
outcome
: (必須) クラス(肯定的または否定的)を定義するフィールド。 -
numTerms
: (必須) 抽出する特徴用語の数。 -
positiveLabel
: (デフォルトは1) 肯定的な結果を定義する結果フィールドの値。
cat
cat
関数は、指定されたファイルまたはディレクトリを読み取り、ファイル内の各行をタプルとして出力します。
出力される各タプルには、file
とline
の2つのフィールドが含まれています。file
には、userfiles
chroot($SOLR_HOME
直下)を基準とした、読み取り元のファイルのパスが含まれ、line
には、そのファイル内の行が含まれます。
cat
は、指定されたドキュメントからデータをインデックス付けするためにupdate
ストリームで使用したり、統計処理または視覚化のために行を個々のトークンにさらに分割するためにanalyze
ストリームで使用したりするのに最適です。
cat パラメータ
-
filePaths
: (必須) 行を読み取るファイルパスのカンマ区切りリスト。指定されたパスがディレクトリの場合、再帰的にクロールされ、含まれているすべてのファイルが読み取られます。悪意のあるユーザーがSolrノードから任意のファイルを読み取るのを防ぐために、filePaths
は、ストリーミング式を実行しているノードの$SOLR_HOME/userfiles
のchrootから測定された相対パスである必要があります。このディレクトリはユーザーが作成する必要があります。 -
maxLines
: (デフォルト -1) 読み取る(および出力するタプル)の最大行数。負の値が指定されている場合は、指定されたファイル内のすべての行がタプルとして出力されます。ファイルは、カンマ区切りfilePaths
引数に表示される順序で読み取られます。行数の制限に達した場合、部分的に出力されるか、まったく読み取られないのは、これらの後続のファイルになります。
nodes
nodes
関数は、幅優先グラフ探索を提供します。詳細については、グラフ探索のセクションを参照してください。
knnSearch
knnSearch
関数は、テキストの類似性に基づいて、ドキュメントのk近傍を返します。内部的には、knnSearch
関数はMore Like Thisクエリパーサープラグインを使用します。
knnSearch パラメータ
-
collection
: (必須) 検索を実行するコレクション。 -
id
: (必須) knn検索を開始するソースドキュメントのID。 -
qf
: (必須) ドキュメントの比較に使用されるクエリフィールド。 -
k
: (必須) 返す最近傍の数。 -
fl
: (必須) 返すフィールドリスト。 -
mindf
: (オプション、デフォルトは5) 検索に含めるためにコーパス内で出現する最小数。 -
maxdf
: (オプション) 検索に含めるためにコーパス内で出現する最大数。 -
minwl
: (オプション) 検索に含めるために単語の最小長。 -
maxwl
: (オプション) 検索に含めるために単語の最大長。
model
api
関数は、SolrCloudコレクションに保存されているロジスティック回帰テキスト分類モデルを取得およびキャッシュします。api
関数は、train関数によって作成されたモデルで動作するように設計されていますが、指定された形式に準拠している限り、Solrの外部でトレーニングされたテキスト分類モデルを取得するためにも使用できます。モデルを取得した後、classify関数を使用してドキュメントを分類できます。
単一のモデルタプルが、idパラメータに基づいてフェッチされ、返されます。モデルは、インデックス内のモデル名とidパラメータを照合することによって取得されます。名前付きモデルの反復がインデックスに複数保存されている場合は、最高の反復が選択されます。
modelでのキャッシュ
api
関数には、内部LRU(最近使用されていない)キャッシュがあるため、api
関数が呼び出されるたびにモデルを取得する必要はありません。各モデルIDのキャッシュ時間は、関数呼び出しにパラメータとして渡すことができます。キャッシュされたモデルを取得しても、キャッシュ内のモデルIDの期限切れの時間はリセットされません。
モデルの保存
Solrでのモデルの保存形式は以下のとおりです。train
関数は以下の形式を出力するため、Solrの外部でトレーニングされたロジスティック回帰モデルでapi
関数を使用する場合は、スキーマの詳細を知る必要があります。
-
name_s
(単一値、文字列、保存済み): モデルの名前。 -
iteration_i
(単一値、整数、保存済み): モデルの反復番号。Solrは、train関数によって生成されたモデルのすべての反復を保存できます。 -
terms_ss
(複数値、文字列、保存済み: モデルの用語/特徴の配列。 -
weights_ds
(複数値、double、保存済み): 用語の重みの配列。各重みは、配列インデックスによって用語に対応します。 -
idfs_ds
(複数値、double、保存済み): 用語のIDF(逆文書頻度)の配列。各IDFは、配列インデックスによって用語に対応します。
random
significantTerms
significantTerms
関数はSolrCloudコレクションに対してクエリを実行しますが、ドキュメントを返す代わりに、結果セット内のドキュメントで見つかった有意な用語を返します。significantTerms
関数は、結果セットでの出現頻度と、コーパス全体での出現頻度の低さに基づいて用語をスコアリングします。significantTerms
関数は、用語、スコア、フォアグラウンド数、バックグラウンド数を含むタプルを各用語に対して出力します。フォアグラウンド数は、結果セット内で用語が出現するドキュメントの数です。バックグラウンド数は、コーパス全体で用語が出現するドキュメントの数です。フォアグラウンド数とバックグラウンド数は、コレクション全体でグローバルです。
significantTerms パラメータ
-
collection
: (必須) 関数が実行されるコレクション。 -
q
: (必須) フォアグラウンドのドキュメントセットを記述するクエリ。 -
field
: (必須) 用語を抽出するフィールド。 -
limit
: (オプション、デフォルト20) 返す用語の最大数。 -
minDocFreq
: (オプション、デフォルト5ドキュメント) 用語がシャードで出現する必要がある最小ドキュメント数。これはfloat値です。1.0より大きい場合は、絶対ドキュメント数と見なされます。1.0より小さい場合は、ドキュメントの割合として扱われます。 -
maxDocFreq
: (オプション、デフォルトドキュメントの30%) 用語がシャードで出現できる最大ドキュメント数。これはfloat値です。1.0より大きい場合は、絶対ドキュメント数と見なされます。1.0より小さい場合は、ドキュメントの割合として扱われます。 -
minTermLength
: (オプション、デフォルト4) 有意と見なされる用語の最小長。
shortestPath
shortestPath
関数は、最短経路グラフ走査の実装です。shortestPath
関数は、重み付けのないグラフで反復的な幅優先探索を実行し、グラフ内の2つのノード間の最短経路を見つけます。shortestPath
関数は、見つかった各パスに対してタプルを出力します。出力される各タプルには、パスを構成するnodeIDのList
を指すpath
キーが含まれます。
shortestPath パラメータ
-
collection
: (必須) トピッククエリが実行されるコレクション。 -
from
: (必須) 検索を開始するnodeID。 -
to
: (必須) 検索を終了するnodeID。 -
edge
: (必須) 構文:from_field=to_field
。from_field
は検索元のフィールドを定義します。to_field
は検索先のフィールドを定義します。詳細な説明については、以下の例を参照してください。 -
threads
: (オプション: デフォルト6) トラバーサルでパーティション分割された結合を実行するために使用されるスレッド数。 -
partitionSize
: (オプション: デフォルト250) 結合の各パーティション内のノード数。 -
fq
: (オプション) フィルタークエリ -
maxDepth
: (必須) グラフ内の最大深度への検索を制限します。
shortestPath 構文
shortestPath(collection,
from="john@company.com",
to="jane@company.com",
edge="from_address=to_address",
threads="6",
partitionSize="300",
fq="limiting query",
maxDepth="4")
上記の式は、重み付けのない有向グラフで最短経路を見つけるための幅優先探索を実行します。
検索は、from_address
フィールドのnodeID "john@company.com"から始まり、to_address
フィールドのnodeID "jane@company.com"を検索します。この検索は、maxDepth
に達するまで反復的に実行されます。トラバーサルの各レベルは、コレクション全体での並列パーティション分割されたネストループ結合として実装されます。threads
パラメータは各レベルで結合を実行するスレッド数を制御し、partitionSize
パラメータは各結合パーティション内のノード数を制御します。maxDepth
パラメータは、トラバースするレベル数を制御します。fq
は、トラバーサルの各レベルに適用される制限クエリです。
shuffle
shuffle
式は、結果セット全体をソートしてエクスポートします。shuffle
式は、内部的にshuffle
が常に/exportハンドラを使用することを除いて、search
式に似ています。shuffle
式は、完全なソートされた結果セットを必要とするリレーショナル代数デコレータと組み合わせるように設計されています。シャッフルされた結果セットは、並列ストリームデコレータを使用してワーカノード間でパーティション分割し、並列リレーショナル代数を実行できます。並列モードで使用する場合は、partitionKeysパラメータを指定する必要があります。
shuffle パラメータ
-
collection
: (必須) 検索するコレクション。 -
q
: (必須) Solr インデックスに対して実行するクエリ。 -
fl
: (必須) 返すフィールドのリスト。 -
sort
: (必須) ソート条件。 -
zkHost
: 検索するコレクションがローカルストリームハンドラとは異なる zkHost にある場合にのみ定義する必要があります。Zookeeper の認証情報と ACL は、接続している Solr インスタンスと同じ ZkHost が使用されている場合にのみ含まれます (chroot
は異なる場合があります)。 -
partitionKeys
: 検索結果をパーティション分割するためのキーのコンマ区切りリスト。ワーカーノード全体で操作を並列化するための parallel 関数で使用します。詳細については、parallel 関数を参照してください。
stats
stats
関数は、検索結果セットの単純な集計を収集します。stats関数はバケットを介したロールアップをサポートしていないため、statsストリームは常にロールアップされたstatsを持つ単一のタプルを返します。内部的には、stats関数はStatsComponentを使用して検索エンジンへのstatsの生成をプッシュダウンします。stats関数は現在、次のメトリックをサポートしています: count(*)
, sum()
, avg()
, min()
, および max()
。
timeseries
timeseries
関数は、時系列集計を作成します。内部では、timeseries
関数はJSON Facet APIを高性能な集計エンジンとして使用します。
timeseries パラメータ
-
collection
: (必須) statsが集計されるコレクション。 -
q
: (必須) 集計の構築に使用するクエリ。 -
field
: (必須) 時系列の日付フィールド。 -
split
: (オプション) 文字列フィールド。フィールド内の各値に対して別々のタイムラインを生成します。 -
limit
: (オプション) 各時間バケットの分割フィールドの値の数の制限。分割値は、最初のメトリックで降順に並べられます。 -
start
: (必須) Solrの日付または日付計算構文で表現された時系列の開始。 -
end
: (必須) Solrの日付または日付計算構文で表現された時系列の終了。 -
gap
: (必須) Solrの日付計算構文で表現された時系列集計ポイント間の時間ギャップ。 -
format
: (オプション) 出力タプルで日付フィールドをフォーマットするための日付テンプレート。フォーマットは、JavaのSimpleDateFormatクラスによって実行されます。 -
metrics
: (必須) 結果タプルに含めるメトリック。現在サポートされているメトリックは、sum(col)
,avg(col)
,min(col)
,max(col)
,count(*)
,countDist(col)
,std(col)
,per(col, 50)
です。per
メトリックは数値列のパーセンタイルを計算し、同じtimeseries関数で複数回指定できます。
train
train
関数は、SolrCloudコレクションに保存されたトレーニングセットでロジスティック回帰テキスト分類器をトレーニングします。並列反復バッチ勾配降下アプローチを使用して、モデルをトレーニングします。トレーニングアルゴリズムはSolr内に埋め込まれているため、各反復でモデルのみがネットワークを介してストリーミングされます。
train
関数は、モデルのトレーニングに使用される用語と逆文書頻度(IDF)を提供するfeatures関数をラップします。train
関数は、クラスの肯定的な例と否定的な例の両方を含む、features
関数と同じトレーニングセットで動作します。
各反復で、train
関数はモデルを含むタプルを出力します。モデルには、特徴用語、重み、およびモデルの混同行列が含まれています。最適化されたモデルは、特徴用語に基づいてドキュメントを分類するために使用できます。
train パラメータ
-
collection
: (必須) トレーニングセットを保持するコレクション -
q
: (必須) トレーニングセットを定義するクエリ。特徴のIDFは、ここで生成されます。 -
name
: (必須) モデルの名前。SolrCloudコレクションに保存されている場合、モデルを取得するために使用できます。 -
field
: (必須) 特徴を抽出するテキストフィールド。 -
outcome
: (必須) クラス(肯定的または否定的)を定義するフィールド。 -
maxIterations
: (必須) 実行するトレーニング反復回数。 -
positiveLabel
: (デフォルトは1) 肯定的な結果を定義する結果フィールドの値。
topic
topic
関数は、SolrCloud上に構築されたパブリッシュ/サブスクライブメッセージング機能を提供します。topic関数を使用すると、ユーザーはクエリをサブスクライブできます。次に、関数は、トピッククエリに一致する新規または更新されたドキュメントを1回だけ配信します。topic関数の最初の呼び出しは、特定のトピックIDのチェックポイントを確立します。同じトピックIDへの後続の呼び出しは、最初のチェックポイントの後に追加または更新されたドキュメントを返します。トピッククエリの各実行は、トピックIDのチェックポイントを更新します。initialCheckpointパラメータを0に設定すると、トピックはトピッククエリに一致するインデックス内のすべてのドキュメントを処理します。
topic関数は、SOLR-8709がコミットおよびリリースされるまでベータ版と見なす必要があります。 |
topic パラメータ
-
checkpointCollection
: (必須) トピックチェックポイントが保存されるコレクション。 -
collection
: (必須) トピッククエリが実行されるコレクション。 -
id
: (必須) トピックの一意のID。チェックポイントはこのIDで保存されます。 -
q
: (必須) トピッククエリ。 -
fl
: (必須) トピック関数によって返されるフィールドリスト。 -
initialCheckpoint
: (オプション) キューからの読み込みを開始する初期のSolr_version_
番号を設定します。設定しない場合、デフォルトではインデックス内の最も高いバージョンになります。0に設定すると、インデックス内のクエリに一致するすべてのレコードが処理されます。 -
zkHost
: (オプション) 検索対象のコレクションがローカルストリームハンドラーとは異なるzkHostにある場合にのみ定義が必要です。Zookeeperの資格情報とACLは、接続先のSolrインスタンスと同じZkHostが使用されている場合にのみ含まれます(chroot
は異なっても構いません)。