@tsihedeyo
2014-08-09T19:00:50.000000Z
字数 1623
阅读 2638
solr_in_action
chapter_5
翻译
本节描述如下问题:
- 在索引中文档是如何存在的
- 每个文档时如何唯一标识的
- 用户可以搜索文档的哪些字段
- 用户搜索的结果中可以显示哪些字段
文档粒度的划分影响着Solr索引对整个schema-design过程的处理。有时候划分粒度很明显,如tweet,一个tweet即是一个文档。而当需要建立索引的文档是很大的文档,比如一本技术书,那你可能就需要每个章节为一个文档了。
试想搜索text ananysis
字段,如果一本书就是一个文档,那很可能搜索结果会返回Solr in Action
,但是用户若想在这本书里找text analysis
,他就得一页一页得翻了。图5.3展示了不同粒度划分下的搜索结果。
!图5.3
粒度划分时还要考虑你需要建立索引的内容,比如章节划分对计算机专业书可能很管用,但对于一本科幻小说来说,可能就就不妥了。
扩展——高亮
废话,介绍了下功能
略
确定索引字段的最好方法就是想想用户是否会在查询中用到该字段。另种方法即想想如果你不提供这个字段的话,用户时候会忽视它。
比如用户一般想搜索书的作者和书名,那对于一个书籍查询系统来说,肯定是要加入这两个字段的。而编辑名一般不会被读者用来搜索,可以不对这个字段建立索引。但对于出版社的人来说,就可能会用编辑名进行搜索,这种情况下就应该对编辑名建立索引。
字段标记为indexed的用处:
1.sort, facet, group by, provide query suggestions for, or execute function queries on values within a field
2.also be useful for speeding up hit highlighting
3.need to perform an operation upon the values of a field beyond returning the original field value in the search results
有些字段可能用户不会用来搜索,但是对于开发者来说有用,或反正可能会被用到,这种就标记为stored。
注意选择,stored会消耗硬盘,CPU以及I/O。
在你的core目录下就可以找到schema.xml
schema.xml基本结构内容:
- ,里面包含定义文档结构
2.其他杂项
3.字段类型
其他略
文档提交到索引 时,Solr使用持久化数据层组件directory
来处理。此组件功能如下:
- 隐藏数据操作详情,如储存文档是你会知道是往硬盘上写数据还是用JDBC写入数据
- 提供数据库锁机制,防止索引冲突,比如文件存储的OS级别锁控制
- 平台独立
- 可扩展
缺省存储配置
缺省状态下,Solr存储索引在目录/example/solr/collection1/data下,此位置可在solrconfig.xml中控制
<dataDir>${solr.data.dir}</dataDir>
solr.data.dir
缺省下为data目录,可在solr.xml中改写。
<core loadOnStartup="true" instanceDir="collecion1"/ transient="false" name="collection1" dataDir="/usr/local/solr-data/collection1">