利用开源的 Apache Solr 搜索引擎构建 RESTful 基础存储服务(7)
 
- UID
- 1066743
|

利用开源的 Apache Solr 搜索引擎构建 RESTful 基础存储服务(7)
清单 5. Article 对象的数据格式(bob 发表的第一篇文章)1
2
3
4
5
6
7
8
9
| <doc>
<field name="url">org.apache.solr.blogsample.Article/0</field>
<field name="resource_type">org.apache.solr.blogsample.Article</field>
<field name="id">0</field>
<field name="title">title111</field>
<field name="content">content111</field>
<field name="date">2010/02/28</field>
<field name="reviews">[org.apache.solr.blogsample.Article/0/reviews/0]</field>
</doc>
|
表 2. Article 对象的 Document 模型No.Field Name描述 1 url 存储系统使用的属性,用于唯一标识一个文档的属性,url 的格式参考前面的说明。Article 对象的 url 表示它是一个基础对象、且它的 id=0。 2 resource_type 资源的类型,类型的名字在系统中是唯一的,在使用 Java 语言开发的应用中,资源类型显然设定为类名很方便。 3 id Article 的 id,可以唯一的标识 Article 4 title Article 的标题 5 content Article 的内容 6 date Article 的发表或更新日期 9 reviews Article 相关的所有 Review 的集合,reviews 是一个包含其他对象的 List。同 JSON 的格式类似,List 类型的属性使用“[”和“]”标识开始和结束,List 元素之间使用“,”进行分割。
清单 6. Review 对象的数据格式(bob 发表的第一篇文章的第一条评论)1
2
3
4
5
6
7
8
9
| <doc>
<field name="url">org.apache.solr.blogsample.Article/0/reviews/0</field>
<field name="resource_type">org.apache.solr.blogsample.Review</field>
<field name="id">0</field>
<field name="reviewer">mike</field>
<field name="email">mike@gmail.com</field>
<field name="date">2010/03/02</field>
<field name="content">review content111</field>
</doc>
|
表 3. Review 对象的 Document 模型No.Field Name描述 1 url 存储系统使用的属性,用于唯一标识一个文档的属性,url 的格式参考前面的说明。Review 对象的 url 表示它是 Article 对象(id=0)的附属对象。 2 resource_type 资源的类型,类型的名字在系统中是唯一的,在使用 Java 语言开发的应用中,资源类型显然设定为类名很方便。 3 id Review 的 id,在其关联的 Article 对象的范围内可以唯一的标识 Review 的信息。 4 reviewer 发表 Review 的用户名 5 email 发表 Review 的用户的电子邮件地址 6 date Review 的发表日期 9 content Review 的内容。
从 Solr 返回的检索结果的数据格式
从 Solr 返回的检索结果和存储时使用的数据格式很类似:
清单 7. Blogger 对象的检索结果(Blogger 的名字是 bob)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"> … … </lst>
<result name="response" numFound="1" start="0">
<doc>
<str name="url">org.apache.solr.blogsample.Blogger/bob</str>
<arr name="resource_type"><str>org.apache.solr.blogsample.Blogger</str></arr>
<arr name="email"><str>bob@gmail.com</str></arr>
<arr name="gender"><str>male</str></arr>
<arr name="homepage"><str>http://bob.com</str></arr>
<str name="name">bob</str>
<arr name="password"><str>111</str></arr>
<arr name="phone"><str>1111111</str></arr>
<arr name="articles">
<str>[org.apache.solr.blogsample.Article/0]</str>
</arr>
</doc>
</result>
</response>
|
清单 8. Article 对象的检索结果(bob 发表的第一篇文章)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"> … … </lst>
<result name="response" numFound="1" start="0">
<doc>
<str name="url">org.apache.solr.blogsample.Article/0</str>
<arr name="resource_type">org.apache.solr.blogsample.Article</str></arr>
<arr name="title"><str>Title-001</str></arr>
<arr name="content"><str>Content-001</str></arr>
<arr name="date"><str>2010/02/28 01:38:18</str></arr>
<str name="id">0</str>
<arr name="reviews">
<str>[org.apache.solr.blogsample.Article/0/reviews/0]</str>
</arr>
</doc>
</result>
</response>
|
清单 9. Review 对象的检索结果(bob 发表的第一篇文章的第一条评论)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader"> … … </lst>
<result name="response" numFound="1" start="0">
<doc>
<str name="url">org.apache.solr.blogsample.Article/0/reviews/0</str>
<arr name="resource_type">org.apache.solr.blogsample.Review</str></arr>
<str name="id">0</str>
<arr name="reviewer"><str>mike</str></arr>
<arr name="email"><str>mike@gmail.com</str></arr>
<arr name="content"><str>review content111</str></arr>
<arr name="date"><str>2010/02/28 01:38:18</str></arr>
</doc>
</result>
</response>
|
应用程序将检索到的 XML 文件格式的检索结果变换为 Java 对象后,就可以进行后续的业务处理了。
这就是所有的实现,是不是很简单? |
|
|
|
|
|