流表达式

流表达式将 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 元组以确定流的结尾。

配置

可以使用 socketTimeoutconnTimeout 启动参数配置流表达式的超时。

语言元素

流源

流源发起流。有丰富的搜索、采样和聚合流源可供选择。

可以在 流源参考 中找到所有可用源表达式的完整参考。

流修饰符

流修饰符包装流源和其他流修饰符以转换流。

所有可用的装饰器表达式的完整参考可在 流装饰器参考 中找到。

数学表达式

数学表达式是向量和矩阵数学库,可与流表达式结合使用以执行分析并构建结果集的数学模型。从语言角度来看,数学表达式是流表达式的子语言,不返回元组流。相反,它们对数字、向量、矩阵和数学模型进行操作并返回它们。文档将展示如何组合流表达式和数学表达式。

数学表达式用户指南可在 <<>> 中找到

从语言角度来看,数学表达式被称为流评估器

所有可用的评估器表达式的完整参考可在 流评估器参考 中找到。

可视化

流表达式和数学表达式的可视化使用 Apache Zeppelin 和 Zeppelin-Solr 解释器完成。

Zeppelin-Solr 解释器 中记录了可视化流表达式和设置 Apache Zeppelin 的过程。

流表达式和数学表达式 深入介绍了可视化技术。

流屏幕

  • 流屏幕:提交流表达式并查看结果和解析说明。