首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

利用开源的 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 对象后,就可以进行后续的业务处理了。
这就是所有的实现,是不是很简单?
返回列表