solr Document,Fields,Schema设计概况
翻译自 Apache Solr Reference Guide
solr一个最基本的设计原则是简洁, 你告诉他很多信息,然后问他一些问题,他会给你回答的一段信息,你喂给他的这部分叫做 indexing, 你问他的问题叫做 query。
一个理解solr的方法是举个例子,我们用一个美食的活页本,每一次你加一个活页到这本书中,你更新在最后面的索引,你列举菜的每个成分和页码在最后,设想一下你加了一百个美食,你能很快找到含有豆腐这个食材的美食,用索引能非常快的找到你想要的东西相比直接一页一页的翻着查找。
schema就是你告诉solr 在输入的文档中打算用什么做索引的。
solr眼中的世界是什么样子的。
document是solr中最基本的单元,一个美食的document可能包含这些美食的材料,需要做哪些准备,需要哪些工具,烹饪的时间等等,一个人的document可能包含这个人的名字,年龄,毕业院校等等。
在solr中,document由field组成,field可能描述信息的一些片段,鞋号可能是一个field,姓名也可能是一个field。
fields可能包含不同种类的数据。一个name field ,一般会被定义成text的,一个年龄,可能是float的,如果很好的定义这些类型,solr能够正确的探测到他们,你的用户会得到更好的query。
Field analysis
field analysis 告诉solr应该怎么用过来的数据建索引,一个更加精确的过程可以试processing,或者digestion. 举个例子,一个个人传记中的内容应该都被索引,这样你能快速找到一个对机器学习特别有研究的人,然而有些词是你需要了解的或者说对于你根本没有意义,比如说 你,的,好,而有的词是比较重要的比如机器学习,这种比较有代表性的词,solr解决这类问题的方法是你告诉solr如果这个field做切分,比如去停用词,比如把所有的字母小写。
Field Type定义和属性
一个field的type包含以下4类信息:
1. type名字
2. 继承类的名字
3. 如果type是TextField,定义如何分析它
4. field属性
schema api
使用rest接口可以获取现在collection的fields的一些定义,包括dynamicfields,name ,version,uniquekey等等。
DocValue
这个概念是新加进去的,方便用在sort,facet这些功能中,这样不需要便利这个索引,就能完成一些操作,类似于正排的一些信息。