流表达式
流表达式将 SolrCloud 的功能作为可组合函数公开。这些函数提供了一个系统,用于搜索、转换、分析和可视化存储在 SolrCloud 集合中的数据。
在较高的层次上,文档中将探讨四种主要功能
-
搜索、抽样和聚合来自 Solr 的结果。
-
从 Solr 中检索结果集后转换结果集。
-
使用概率和统计以及机器学习库分析和建模结果集。
-
可视化结果集、聚合和数据的统计模型。
流语言基础
流表达式由与 Solr 集合一起使用的流函数组成。它们发出元组(键/值映射)流。
一些提供的流函数旨在处理整个结果集,而不是像普通搜索那样的前 N 个结果。这由/export 处理程序支持。
某些流函数充当流源以发起流流。其他流函数充当流修饰符以包装其他流函数并在元组流上执行操作。许多流函数可以在工作器集合中并行化。这对于关系代数函数尤其有用。
流请求和响应
Solr 具有一个 /stream
请求处理程序,它接受流表达式请求并以 JSON 流的形式返回元组。此请求处理程序是隐式定义的,这意味着在 solrconfig.xml
中无需定义任何内容 - 请参阅 隐式请求处理程序。
/stream
请求处理程序采用一个参数 expr
,用于指定流表达式。例如,此 curl 命令对一个简单的 search()
表达式进行编码并将其 POST 到 /stream
处理程序
curl --data-urlencode 'expr=search(enron_emails,
q="from:1800flowers*",
fl="from, to",
sort="from asc")' http://localhost:8983/solr/enron_emails/stream
每个函数的参数详细信息如下所示。
对于上述示例,/stream
处理程序使用以下 JSON 响应进行响应
{"result-set":{"docs":[
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"from":"[email protected]","to":"[email protected]"},
{"EOF":true,"RESPONSE_TIME":33}]}
}
请注意,上述示例流中的最后一个元组是 {"EOF":true,"RESPONSE_TIME":33}
。EOF
表示流的结尾。要处理 JSON 响应,您需要使用流 JSON 实现,因为流表达式旨在返回可能包含数百万条记录的整个结果集。在您的 JSON 客户端中,您需要迭代每个文档(元组)并检查 EOF 元组以确定流的结尾。
语言元素
数学表达式
数学表达式是向量和矩阵数学库,可与流表达式结合使用以执行分析并构建结果集的数学模型。从语言角度来看,数学表达式是流表达式的子语言,不返回元组流。相反,它们对数字、向量、矩阵和数学模型进行操作并返回它们。文档将展示如何组合流表达式和数学表达式。
数学表达式用户指南可在 <<>> 中找到
从语言角度来看,数学表达式被称为流评估器。
所有可用的评估器表达式的完整参考可在 流评估器参考 中找到。
可视化
流表达式和数学表达式的可视化使用 Apache Zeppelin 和 Zeppelin-Solr 解释器完成。
在 Zeppelin-Solr 解释器 中记录了可视化流表达式和设置 Apache Zeppelin 的过程。
流表达式和数学表达式 深入介绍了可视化技术。
流屏幕
-
流屏幕:提交流表达式并查看结果和解析说明。