Solr
 是一个开源的搜索引擎工具,分布式搜索。说到分布式搜索几个字已经能大致了解他的优势和特点。在此要感谢公司的技术交流氛围,让我了解了不少新技术,但要是一直遇不到场景,难免会忘记,所以现在记录下来。
 初印象是Solr的速度非常之快,他的原理大致为可以把关系型数据库的数据搬出来,基于数据的索引可进行增删改查(也是为什么它很快的一个原因),支持用户自定义的分词器,教程里写可以与Hadoop一起使用,但好吧我还不了解Hadoop…
 上面说他把数据库的数据搬出来,Solr不仅支持查询,其实也是一个变相的数据库,没错他应该是算作NoSQL的,它是支持存储,可扩展的,处理大量数据的搜索引擎。
 官方的教程已经非常详细,这边也不做多余的操作步骤,大概讲个流程。推荐教程,W3C, 易百,
 导入数据需要在xml里配置数据库信息,开启Solr服务后有个可视化的仪表盘,可以看到Solr的占存、分片情况等,可以在查询面板里执行查询操作,有一些参数
| 参数 | 描述 | 
|---|---|
| q | 这是Apache Solr的主要查询参数,文档根据它们与此参数中的术语的相似性来评分。 | 
| fq | 这个参数表示Apache Solr的过滤器查询,将结果集限制为与此过滤器匹配的文档。查询结果被限制为仅搜索筛选器查询返回的结果。 | 
| start | start参数表示页面的起始偏移量,此参数的默认值为0。 | 
| rows | 这个参数表示每页要检索的文档的数量。此参数的默认值为 10。 | 
| sort | 这个参数指定由逗号分隔的字段列表,根据该列表对查询的结果进行排序。 | 
| fl | 这个参数为结果集中的每个文档指定返回的字段列表。 | 
| wt | 这个参数表示要查看响应结果的写入程序的类型。 | 
 Solr索引(Document),它类似与关系型数据库表中的一条记录,可以包含多个字段(Field),每个字段包含name和value,通常文档都包含一个能唯一表示该数据的id字段,例如:
| 1 | <doc> | 
Field座位构成Document的基本单元,除了name和value还有一些其他属性
| 1 | <field name="name" type="text_general" indexed="true" stored="true"/> | 
- Indexed:Indexed=true时,表示字段会加被Sorl处理加入到索引中,只有被索引的字段才能被搜索到。
- Stored:Stored=true,字段值会以保存一份原始内容在在索引中,可以被搜索组件组件返回,考虑到性能问题,对于长文本就不适合存储在索引中。
核心(core),封装单个物理索引。一个或多个组成集合的逻辑碎片(或片)。当数据量大的时候,需要分布式的solr,这时拆分后的数据就存放在一个个core中,一个collection下可以有一个或多个core,而core可以看做一个容器,是数据碎片所在的地方,但是担心一台机器里出故障,所以碎片有重复的。