[关闭]
@tsihedeyo 2014-08-09T19:00:50.000000Z 字数 1623 阅读 2638

Solr in Action 5.2

solr_in_action chapter_5 翻译


5.2 设计你的schema

本节描述如下问题:

  • 在索引中文档是如何存在的
  • 每个文档时如何唯一标识的
  • 用户可以搜索文档的哪些字段
  • 用户搜索的结果中可以显示哪些字段

5.2.1 文档粒度

文档粒度的划分影响着Solr索引对整个schema-design过程的处理。有时候划分粒度很明显,如tweet,一个tweet即是一个文档。而当需要建立索引的文档是很大的文档,比如一本技术书,那你可能就需要每个章节为一个文档了。

试想搜索text ananysis字段,如果一本书就是一个文档,那很可能搜索结果会返回Solr in Action,但是用户若想在这本书里找text analysis,他就得一页一页得翻了。图5.3展示了不同粒度划分下的搜索结果。
!图5.3

粒度划分时还要考虑你需要建立索引的内容,比如章节划分对计算机专业书可能很管用,但对于一本科幻小说来说,可能就就不妥了。

扩展——高亮
废话,介绍了下功能


5.2.2 Unique key


5.2.3 indexed fields

确定索引字段的最好方法就是想想用户是否会在查询中用到该字段。另种方法即想想如果你不提供这个字段的话,用户时候会忽视它。

比如用户一般想搜索书的作者和书名,那对于一个书籍查询系统来说,肯定是要加入这两个字段的。而编辑名一般不会被读者用来搜索,可以不对这个字段建立索引。但对于出版社的人来说,就可能会用编辑名进行搜索,这种情况下就应该对编辑名建立索引。

字段标记为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


5.2.4 Stored fields

有些字段可能用户不会用来搜索,但是对于开发者来说有用,或反正可能会被用到,这种就标记为stored。

注意选择,stored会消耗硬盘,CPU以及I/O。


5.2.5 schema.xml

在你的core目录下就可以找到schema.xml
schema.xml基本结构内容:

  1. ,里面包含定义文档结构
    2.其他杂项
    3.字段类型

5.3 schema.xml配置

其他略


5.7 索引管理

5.7.1. 索引存储

文档提交到索引 时,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">


添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注