【发布时间】:2011-12-14 16:09:03
【问题描述】:
在我正在进行的一个项目中,我们使用 SolrNet 与 Solr 进行交互。我们在 solr 中有一个自定义搜索组件,通过在查询中添加 join=true 来激活。 (我通过CommonQueryOptions 的ExtraParams 在solrnet 中执行此操作)。
在响应中有一个自定义的<lst name="joinresult"> 在我要解析的正常结果之后,并返回给调用者。
现在我不知道在 SolrNet 管道中的何处可以干净地插入自定义 ResponseParser。
到目前为止我做了什么:
- 创建了一个
JoinResult<T>类来保存我的自定义结果 - 创建了一个带有
IList<JoinResult<T>> JoinResult属性的JoinQueryResults<T> : SolrQueryResult<T>。 - 创建了
IJoinResponseParser<T> : ISolrResponseParser<T>接口 - 创建了一个
JoinResponseParser<T> : IJoinResponseParser<T>来将自定义列表结果解析为JoinQueryResults.JoinResult属性。
下一步是将所有这些类插入正确的位置,并使用SolrQueryExecuter<T>.Execute 完成其余的繁重工作。但这将始终返回 SolrQueryResult,而不是我的自定义结果。
有人知道我需要什么来支持我的方案吗?
编辑:
到目前为止,我得到的是以下内容:
- 从
SolrQueryExecuter<T>派生并添加一个返回JoinQueryResults<T>的ExecuteJoin(q,options)方法。
这行得通,但感觉并不“正确”。我的 Execute 方法是普通 Execute 方法的副本,只有一个基本更改:我将 new SolrQueryResults 替换为 new JoinQueryResults。
阅读 SolrNet 代码我找不到任何其他“简单”的方法,所以我暂时保留这种方法。
【问题讨论】:
标签: solrnet