在我正在研究的項目中,我們使用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