Solr in action学习笔记 第一章 介绍

*面对基于全球用户消费和产生的大数据,为了对用户请求及时响应,我们对非关系型数据存储和处理技术越来越关注。称为No SQL (Not only SQL )。对不同类型的数据有单独的存储和处理引擎。也就是说,NoSQL是对解决一类具体问题具体数据类型的优化。架构师组合多NoSQL和关系数据库。一种类型适应所有数据的时代已经过去了!

*Apache Solr就是一种具体的NOSQL技术。Solr就是针对检索大规模文本并返回相关性排序的企业搜索引擎。基本特性

  *Scalable:可部署于多服务器的集群

  *Ready to deploy:提供完善的程序,可以立刻部署使用

  *Optimized for search:快速搜索复杂query的能力

  *Large volumes of documents:

  *Text-centric:对自然语言的检索内容优化

  *Results sorted by relevance:文档与query的相关性排序

1.1 Why do I need a search engine?

1.1.1 Managing text-centric data

现代应用架构的特点是存储和处理引擎与你的数据相匹配。正如算法问题要选择合适的数据结构,Solr基于如下四个特点优化:

  1.Text-centric
  2.Read-dominant
  3.Document-oriented
  4.Flexible schema

上述四条揭示了solr不是一种通用的数据存储和处理技术,而是关系数据库和NOSQL数据库基于搜索问题的补充!

1.1.2 Common search-engine use cases

优秀的搜索引擎的门槛bar?是高的

应该把用户体验放在一个高的优先级

*BASIC KEYWORD SEARCH

是用户的最基本需求,必须提供最好的用户体验!  

  ■快速返回
  ■拼写检查
  ■自动关键词推荐,尤其对于移动应用
  ■query同义词识别
  ■与query同义的文档必须匹配
  ■语法处理:是匹配所有词还是任一个词
  ■停止词处理:a,an,the等
  ■如果对首页结果不满意,user可以看到更多的结果
 *RANKED RETRIEVAL

SQL返回要么匹配结果,Solr返回基于相关性排序的结果

*BEYOND KEYWORD SEARCH

用户对搜索需求不明确,Solr提供例如分类技术facet search帮助用户

*DON 'T USE A SEARCH ENGINE TO ...

Solr提供搜索分页技术,如过要求不分页但返回文档巨大,则会非常慢!(query结果很快,但生成结果很慢!)

对索引结构的深度分析(除非你有很大的内存)?

不提供文档相关性的query

不提共文档级别的安全性,如果需求,则需要外部的程序

1.2What is Solr?

Solr不是网页搜索引擎如google,baidu

Solr与SEO没有任何关系

1.2.1Information retrieval engine

基于apache lucene

Information retrieval (IR) is finding material (usually documents) of an
unstructured nature (usually text) that satisfies an information need from
within large collections (usually stored on computers). 

solr使用lucene的索引和搜索库

lucene倒排索引保存文档id和索引出现频率

1.2.2Flexible schema management

Lucene只提供核心库,如果要使用lucene,还需要大量的java编程。

solr提供了方便的配置程序,只需要配置几个xml就可以运行搜索程序。

1.2.3Java web application

                                solr的分布式架构图

solr提供基于http,xml,json等协议的服务,同时也提供各种流行编程语言的API。(主要使用Java的API——SolrJ)

1.2.4Multiple indexes in one server

但服务器可运行多个core

1.2.5可扩展性:插件系统可以方便的定制需求

1.2.6Scalable

单机系统有局限

solr提供缓存管理

query吞吐量和索引文档数量

吞吐量:通过复制索引,可以让多服务器处理query(实践中,处理能力不是线性增长的,例如3台服务器的处理能力可能是2.5)

文档数量:将索引分成"shards"

Solr可以部署到云平台的虚拟硬件上,但搜索是对内存和IO敏感的,如果对搜索性能有较高的要,则需要高端的硬件。

1.2.7容错

确保集群中部分服务器出错,solr还能正常运行

1.3 Why Solr?

1.3.1 Solr for the software architect

稳定性,分布式,容错性都表现出色!

SolrCloud使用Zookeeper管理分布式系统

1.3.2Solr for the system administrator

solr内置了Jetty,

支持HTTP,JMX等等

提供一个web管理界面

1.3.3Solr for the CEO

many companies are still running on Solr 

you can have it up and running in minutes

Solr has a large support community,You also have access to the source code

Solr doesn’t require much initial investment to get started.

1.4Features overview

1.4.1User-experience features:用户体验特性

*Pagination and sorting:分页和排序:更快的显示,相关性排序

*FACETING:层面搜索(分类):提炼搜索结果

*AUTOSUGGEST:拼写推荐

*SPELL - CHECKER:拼写检查

*highlight

*地图搜索

1.4.2 Data-modeling features

*RESULT GROUPING / FIELD COLLAPSING:基于文档的共同特征分组(不同于facet是基于field分组)

  例如相似内容的email将会分到一组

*FLEXIBLE QUERY SUPPORT:

  Conditional logic using AND , OR , and NOT

  Wildcard matching
  Range queries for dates and numbers
  Phrase queries with slop to allow for some distance between terms?
  Fuzzy string matching:模糊匹配
  Regular expression matching
  Function queries

*Join

With Solr joins, you can return child documents of parents that match your search criteria. One example in which Solr joins are useful is returning all retweets of a Twitter message into a single response.

*DOCUMENT CLUSTERING

怎么又来了个聚类%>_<%用于删除重复的query结果,只显示一个结果

*IMPORTING RICH DOCUMENT FORMATS SUCH AS PDF AND WORD

使用Apache Tika提取二进制文件

*IMPORTING DATA FROM RELATIONAL DATABASES

Data Import Handler

MULTILINGUAL SUPPORT:多语言支持

 

转载于:https://www.cnblogs.com/cjrzh/p/4506285.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值