0

我们正在开发一个搜索应用程序。所有的东西都完成了,比如 SOLR 模式、搜索查询、分面搜索等。我尝试开发一个 cxf Web 服务,它返回一个 SolrDocument 列表。一切正常,直到我尝试将服务函数的返回类型设为 SolrDocument。我知道 CXF 不会为没有空构造函数的 java 对象生成返回类型。对于 SolrDocument 对象是这种情况吗?此外,我成功地使用 CXF 返回了复杂的 java 对象类型。对于将 SolrDocument 作为对象返回,您提出的解决方案是什么?

我想到的一个想法是创建我自己的 Document 对象并将 SolrDocument 转换为该类型,但它很昂贵,因为我已经将搜索结果作为 SolrDocument。

提前致谢。

4

1 回答 1

0

我已经解决了我的问题。该问题与 SolrDocumentList 有关。由于 SolrDocumentList 类不可序列化,CXF 无法进行映射。解决方案是创建您的 bean。例如,我们有一个与 Solr 模式中定义的字段兼容的 VODItem.Class,然后在搜索时我们必须这样做:

DocumentObjectBinder binder = new DocumentObjectBinder();
List<VodItem> vodResults = new ArrayList<VodItem>();
vodResults = binder.getBeans(VodItem.class, SolrDocumentList);

现在 Web 服务可以进行必要的映射。

于 2013-09-16T11:14:06.403 回答