设为首页 收藏本站
查看: 1437|回复: 0

[经验分享] EasyNet.Solr系列:处理xml或者json格式返回数据

[复制链接]

尚未签到

发表于 2015-7-16 11:27:06 | 显示全部楼层 |阅读模式
  在上一边随笔EasyNet.Solr架构中,写道了EasyNet.Solr具有良好的扩展性,内置了对xml、json文本格式返回数据的处理。步骤如下:

  
  1.定义ICodecFactory,由于xml、json都是基于文本的,所以我们使用TextCodecFactory。
  2.创建指定ICodecFactory的Solr连接ISolrConnection。
  3. 创建ISolrQueryOperations用于Solr查询,T为返回结构数据类型,此处应该为string类型。

  4.预先定义好的IObjectDeserialize,对象反序列化接口实现。T为要反序列化为的对象数据类型。
  5.构造查询字符串及查询选项。
  6.进行查询,返回结果。
  7.对于查询结果,可以用各种实现ISolrResponseParser接口的解析器进行解析。ST为原数据类型,此处为stirng类型,DT为解析结果的数据类型。  
下面的例子,演示了如何用EasyNet.Solr处理xml或者json格式返回数据。

  
  定义Example 实体类:


DSC0000.gif DSC0001.gif View Code

1     public class Example
2     {
3         public string Id { get; set; }
4         public string Name { get; set; }
5         public IList Features { get; set; }
6         public DateTime ModifiedDateTime { get; set; }
7     }  定义ExampleObjectDeserialize用于反序列化:

View Code

1   public class ExampleObjectDeserialize : IObjectDeserialize
2     {
3         public IEnumerable Deserialize(SolrDocumentList result)
4         {
5             var examples = new List();
6
7             foreach (SolrDocument doc in result)
8             {
9                 examples.Add(new Example()
10                 {
11                     Id = doc["id"].ToString(),
12                     Name = doc["name"].ToString(),
13                     ModifiedDateTime = Convert.ToDateTime(doc["last_modified"]),
14                     Features = (IList)doc["features"]
15                 });
16             }
17
18             return examples;
19         }
20     }  处理xml格式返回数据:

View Code

1             var codeFactory = new TextCodecFactory();
2             var con = new SolrConnection("http://localhost:8088/solr") { CodecFactory = codeFactory };
3             var objectDeserialize = new ExampleObjectDeserialize();
4             var qop = new SolrQueryOperations(con);
5             var options = new NameValueCollection();
6
7             options.Add(CommonParams.START, "0");
8             options.Add(CommonParams.ROWS, "10");
9             options.Add(HighlightParams.HIGHLIGHT, "true");
10             options.Add(HighlightParams.FIELDS, "name");
11             options.Add(CommonParams.WT, "xml");
12
13             var response = qop.Query(new SolrQuery("name:terry"), options);
14
15             //解析返回头信息
16             var xmlResponseHeaderParser = new XmlResponseHeaderParser();
17
18             var responseHeader = xmlResponseHeaderParser.Parser(response);
19
20             //解析高亮
21             var xmlHighlightingParser = new XmlHighlightingParser();
22
23             var highlighting = xmlHighlightingParser.Parser(response);
24
25             //解析查询结果
26             var xmlQueryResultsParser = new XmlQueryResultsParser(objectDeserialize);
27
28             var examples = xmlQueryResultsParser.Parser(response);  处理json格式返回数据:

View Code

1             var codeFactory = new TextCodecFactory();
2             var con = new SolrConnection("http://localhost:8088/solr") { CodecFactory = codeFactory };
3             var objectDeserialize = new ExampleObjectDeserialize();
4             var qop = new SolrQueryOperations(con);
5             var options = new NameValueCollection();
6
7             options.Add(CommonParams.START, "0");
8             options.Add(CommonParams.ROWS, "10");
9             options.Add(HighlightParams.HIGHLIGHT, "true");
10             options.Add(HighlightParams.FIELDS, "name");
11             options.Add(CommonParams.WT, "json");
12
13             var response = qop.Query(new SolrQuery("name:terry"), options);
14
15             //解析头信息
16             var jsonResponseHeaderParser = new JsonResponseHeaderParser();
17
18             var responseHeader = jsonResponseHeaderParser.Parser(response);
19
20             //解析高亮
21             var jsonHighlightingParser = new JsonHighlightingParser();
22
23             var highlighting = jsonHighlightingParser.Parser(response);
24
25             //解析查询结果
26             var jsonQueryResultsParser = new JsonQueryResultsParser(objectDeserialize);
27
28             var examples = jsonQueryResultsParser.Parser(response);  从上面示例可以看出,EasyNet.Solr可以很方便的处理xml、json格式数据。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-87258-1-1.html 上篇帖子: Apache Solr使用自定义QParser后同义词扩展及Token去重的感悟 下篇帖子: solr与.net系列课程(八)solr中重跑索引的注意事项
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表