@tsihedeyo
2015-09-21T16:31:39.000000Z
字数 1409
阅读 2966
solr_in_action
chapter_5
翻译
本章内容涉及:
- 为你的索引设定schema
- 在schema.xml中设定fields以及fieldType
- 使用fieldTypes
- 控制update, commits,atomic updates
- solrconfig.xml中控制index
第三章中我们列举了简单的示例,说明索引的工作原理。本节将描述Solr是如何建立索引的,索引建立的一个关键点在于文本分析,本章着重于索引的处理以及非文本的处理,详细的文本分析将在章节6中讲述。
图5.1显示了接下来我们需要在Solr中为之建立索引的文本,即使你可能对社交类搜索不感兴趣,但通过这个例子学到的东西适用于大多数的搜索应用。
表5.1 虚拟的tweet字段
Field | Value |
---|---|
id | 1 |
screen_name | @thelabdude |
type | post |
timestamp | 2012-05-22 09:32:12 |
lang | en |
use_id | 1232423451225312 |
favorites_count | 10 |
text | #Yummm :) Drinking a latte at Caffé Grecco in SF's historic North Beach... Learning text analysis with #SolrInAction by @ManningBooks on my i-Pad |
Solr索引存储的文件都是由一个个字段field组成的,每个field都以fieldType,该类型决定了该字段被存储、分析以及搜索的方式。如表5.1所示,microblog文档包含了8个字段,而真正会用于搜索的字段大概是screen_name,timestamp,type,lang,text
。比方说我们可能会想搜索某人某时段发的英文微博。再比如user_id
这个字段是用来内部标志的,不大可能被用户搜索所用,所以为了减少不必要的索引存储,这个字段不应该被设置为存储。favorites_count
表示该微博被点赞数目,这个也不大可能用于搜索,更倾向被用于前台的可视化UI处理中,对于这种display-oriente
字段的处理,我们在5.2节中介绍。
好好字段是否会在用户查询中用到,这会影响到Solr中对字段的处理方式。图5.1为我们预想的用户查询界面,其中就说明了用户查询可能需要用的字段。
图5.1 虚拟的web搜索表单,搜索字段用到了screen_name,timestamp,type,lang,text
!图5.1
Solr索引处理可大致分为:
1.文档转换为Solr支持的格式,XML或者Json
2.Http post提交文档数据
3.配置Solr,解析文档中的文本
图5.2为Solr处理的过程图。
!图5.2
图中我们选用了XML格式来描述数据,其中XML文档意义解读如下:
!列表5.1
章节2中我们就提到过Solr提供了基本的HTTP接口,图5.2的最上部我们就调用了HTTP POT到document_update
服务接口,该服务会辨别文档中的字段、之后进行文本分析,当每个字段都被分析完成后,分析的结果会加入index中,至此我们认为该文档已可被搜索。
5.5节将深入讨论建立索引的过程。