SolrNet:如何使用solrnet中的自定义搜索组件(及其结果)

时间:2011-12-14 16:09:03

标签: solrnet

在我正在研究的项目中,我们使用SolrNet与Solr进行交互。我们在solr中有一个自定义搜索组件,通过向查询添加join=true来激活。 (我通过ExtraParams的{​​{1}}在solrnet中执行此操作。 在响应中,在我要解析的正常结果之后有一个自定义CommonQueryOptions,并返回给调用者。

现在我不知道在哪里可以在SolrNet管道中干净地插入自定义ResponseParser。

到目前为止我做了什么:

  • 创建了一个<lst name="joinresult">类来保存我的自定义结果
  • 创建了JoinResult<T> JoinQueryResults<T> : SolrQueryResult<T>属性。
  • 创建了IList<JoinResult<T>> JoinResult界面
  • 创建IJoinResponseParser<T> : ISolrResponseParser<T>以将自定义列表结果解析为JoinResponseParser<T> : IJoinResponseParser<T>属性。

下一步是将所有这些类插入正确的位置,并使用JoinQueryResults.JoinResult完成其余的繁重工作。但是这将始终返回SolrQueryResult,而不是我的自定义结果。

有人知道我需要什么来支持我的情景吗?

编辑:
到目前为止,我得到的是:

  • SolrQueryExecuter<T>.Execute导出并添加SolrQueryExecuter<T>方法,该方法返回ExecuteJoin(q,options)

这有效,但它并不真正感觉'正确'。我的Execute方法是正常Execute方法的副本,只有一个基本变化:我将JoinQueryResults<T>替换为new SolrQueryResults

阅读SolrNet代码我找不到任何其他'简单'的方法,所以我现在一直保持这种方法。

1 个答案:

答案 0 :(得分:1)

我不确定SolrNet库是否支持在不修改源的情况下插入自定义响应解析器。

但是,我建议检查SolrNet on GitHub的源代码,并查看如何从SolrQueryResponse中解析Faceting或Highlighting结果。根据其中一个示例,您应该能够修改源以处理您创建的JoinQueryResults。理想情况下,您可以将此贡献回项目,以便其他人也可以从中受益。