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可以看做一个容器,是数据碎片所在的地方,但是担心一台机器里出故障,所以碎片有重复的。