文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>EasyNet.Solr系列:处理xml或者json格式返回数据

EasyNet.Solr系列:处理xml或者json格式返回数据

时间:2011-05-05  来源:TerryLiang

在上一边随笔EasyNet.Solr架构中,写道了EasyNet.Solr具有良好的扩展性,内置了对xml、json文本格式返回数据的处理。步骤如下:

 

1.定义ICodecFactory,由于xml、json都是基于文本的,所以我们使用TextCodecFactory。

2.创建指定ICodecFactory的Solr连接ISolrConnection。

3. 创建ISolrQueryOperations<T>用于Solr查询,T为返回结构数据类型,此处应该为string类型。

4.预先定义好的IObjectDeserialize<T>,对象反序列化接口实现。T为要反序列化为的对象数据类型。

5.构造查询字符串及查询选项。

6.进行查询,返回结果。

7.对于查询结果,可以用各种实现ISolrResponseParser<ST, DT>接口的解析器进行解析。ST为原数据类型,此处为stirng类型,DT为解析结果的数据类型。 

下面的例子,演示了如何用EasyNet.Solr处理xml或者json格式返回数据。

 

定义Example 实体类:

View Code 1     public class Example
2     {
3         public string Id { get; set; }
4         public string Name { get; set; }
5         public IList<string> Features { get; set; }
6         public DateTime ModifiedDateTime { get; set; }
7     }

 定义ExampleObjectDeserialize用于反序列化:

View Code  1   public class ExampleObjectDeserialize : IObjectDeserialize<Example>
 2     {
 3         public IEnumerable<Example> Deserialize(SolrDocumentList result)
 4         {
 5             var examples = new List<Example>();
 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<string>)doc["features"]
15                 });
16             }
17 
18             return examples;
19         }
20     }

 处理xml格式返回数据:

View Code  1             var codeFactory = new TextCodecFactory();
 2             var con = new SolrConnection<string>("http://localhost:8088/solr") { CodecFactory = codeFactory };
 3             var objectDeserialize = new ExampleObjectDeserialize();
 4             var qop = new SolrQueryOperations<string>(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<Example>(objectDeserialize);
27 
28             var examples = xmlQueryResultsParser.Parser(response);

 处理json格式返回数据:

View Code  1             var codeFactory = new TextCodecFactory();
 2             var con = new SolrConnection<string>("http://localhost:8088/solr") { CodecFactory = codeFactory };
 3             var objectDeserialize = new ExampleObjectDeserialize();
 4             var qop = new SolrQueryOperations<string>(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<Example>(objectDeserialize);
27 
28             var examples = jsonQueryResultsParser.Parser(response);

 从上面示例可以看出,EasyNet.Solr可以很方便的处理xml、json格式数据。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载