Solr简介
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
- 特点
搜索实现的原理
网络爬虫(网络蜘蛛)去各个网站上抓取网页,然后保存到服务器上,通过分词器,分析网页中的出现最多的关键词,按照词出现的次数进行排名。当我们搜索,实际上就是关键词出现的次数最多对应的网页的排名。
solr的工作机制
- solr就是在lucene工具包的基础之上进行了封装,而且是以web服务的形式对外提供索引功能
- 业务系统需要使用到索引的功能(建索引,查索引)时,只要发出http请求,并将返回数据进行解析即可
使用步骤
-
solr服务器搭建,因为solr是用java5开发的,所以需要jdk和tomcat搭建部署
-
将要展示的字段引入solr的库中。配置spring与solr结合,工程启动的时候启动solr
-
将数据库中的查询内容导入到solr索引库,这里使用的是solr的客户端实现的。具体使用可以参考api
-
建立搜索服务,供客户端调用。调用solr,查询内容,这中间有分页功能的实现。solr高亮显示的实现。
-
客户端接收页面的请求参数,调用搜索服务,进行搜索。
业务字段判断标准
- 在搜索时是否需要在此字段上进行搜索。例如:商品名称、商品的卖点、商品的描述
- (这些相当于将标签给了solr,导入商品数据后,solr对这些字段的对应的商品的具体内容进行分词切分,然后,我们就可以搜索到相关内容了)
- 后续的业务是否需要用到此字段。例如:商品id。
- 需要用到的字段:商品id、商品title、卖点、价格、商品图片、商品分类名称、商品描述
常用的面试题
https://blog.csdn.net/qq_30764991/article/details/97301472
- 为什么要用solr服务,为什么要用luncence?
- 1
当我们访问购物网站的时候,我们可以根据我们随意所想的内容输入关键字就可以查询出相关的内容,这是怎么做到呢?这些随意的数据不可能是根据数据库的字段查询的,那是怎么查询出来的呢,为什么千奇百怪的关键字都可以查询出来呢?
答案就是全文检索工具的实现,luncence采用了词元匹配和切分词。举个例子:北京天安门------luncence切分词:北京 京天 天安 安门 等等这些分词。所以我们搜索的时候都可以检索到。
这就使用solr的最大的好处:检索功能的实现。
- 1
- solr内置查询参数有哪些?
q – 查询字符串,必须的。Solr 中使用的基本查询。
fq – (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,
sort – 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。
start – 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。
rows – 指定返回结果最多有多少条记录,配合start来实现分页。
wt – (writer type)指定输出格式,可以有 xml, json, php, phps, 后面 solr 1.3增加的,要用通知我们,因 为默认没有打开。
fl- field作为逗号分隔的列表指定文档结果中应返回的 Field 集。默认为 “*”,指所有的字段。“score” 指还应 返回记分。
df – 默认的查询字段(field),一般默认指定
qt – (query type)指定那个类型来处理查询请求,一般不用指定,默认是standard。
hl - 设置字段高亮显示(内置还有一些参数)