在我正在研究的项目中,我们使用SolrNet与Solr进行交互。我们在solr中有一个自定义搜索组件,通过在查询中添加join=true
来激活。 (我在solrnet中通过CommonQueryOptions
的ExtraParams
)。 在响应中有一个自定义<lst name="joinresult">
后,我想解析,并返回给调用者的正常结果。SolrNet:如何使用solrnet中的自定义搜索组件(及其结果)
现在我不知道我可以在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>
- 派生并添加一个
ExecuteJoin(q,options)
方法返回一个JoinQueryResults<T>
。
这样做有效,但它并不真正感觉'正确'。我的执行方法是正常执行方法的副本,只有一个必要的更改:我用new JoinQueryResults
替换了new SolrQueryResults
。
读取SolrNet代码我找不到任何其他'简单'的方法,所以我现在保持这种方法。
嗨,保罗,阅读代码,我认为我被困在``SolrQueryExecuter`的`Execute`方法``var results = new SolrQueryResults();`行。我希望能够新增我的派生SolrQueryResults类。 –
rjvdboon
2011-12-15 07:05:06