SolrJ库为Solr的响应提供了不同的解析器。
即:
BinaryResponseParser
StreamingBinaryResponseParser
NoOpResponseParser
XMLResponseParser
遗憾的是,除了以下内容外,该文档没有对它们进行过多说明:
SolrJ使用二进制格式而不是XML作为默认格式。
希望继续使用XML的Solr早期版本的用户
必须将解析器显式设置为XMLResponseParser,如下所示:
server.setParser(new XMLResponseParser());
因此,看起来XMLResponseParser主要用于遗留用途。
其他解析器之间有什么区别?
我可以期望通过在XMLResponseParser上使用其他解析器来提高性能吗?
最佳答案
二进制流解析器旨在直接与Java对象格式(二进制POJO格式)一起使用,以使在客户端上尽可能平滑地创建数据对象。
XML解析器旨在与没有任何实际替代方法的旧响应格式一起使用(因为Solr中没有二进制响应格式)。与直接使用二进制格式相比,考虑XML格式的所有选项还需要做很多工作。
StreamingBinaryResponseParser与BinaryResponseParser进行相同的工作,但被设计为制作流式传输文档(即,不创建文档列表并返回该列表,而是自己返回每个文档,而不必将它们都同时保存在内存中)可能。有关功能及其添加原因的说明,请参见SOLR-2112。
最后,是的,如果您使用的是SolrJ,请使用二进制响应格式,除非您有充分的理由使用基于XML的格式。如果必须提出问题,最好使用二进制格式。