solr入门+实战.pdf
《solr入门+实战.pdf》由会员分享,可在线阅读,更多相关《solr入门+实战.pdf(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、1 Solr学习教程学习教程 大纲: 了解 Solr 的作用 掌握 Solr 中单 Core 和 Collection 的创建方法 会使用 Solr 提供的基本管理工具 会使用 Solrj 访问 Solr 技术亮点: Solr 1.11.1 SolrSolr 入门入门 1.1.1 什么是什么是Solr Solr 是基于 Lucene 技术实现的一个搜索服务,它提供了基于 HTTP 方式的访问接口, 其 API 接口支持多种数据格式(包括 JSON、XML) ,所以各种语言都可以方便地调用 Solr 的搜索服务。 Solr 支持集群技术、利用 Solr 云,使用者可以透明地对索引数据进行分片和复
2、制,提 高整个系统的高负荷量和高可用性。 相比之下,Lucene 仅仅是它的核心搜索技术的实现,Lucene 仅支持 java 语言的客户端 使用者(Lucene 有基于.net 的移植项目,但已经商业化不支持开源) 1.1.2 安装并运行安装并运行Solr 步骤:步骤: 1) 解压 solr-4.10.2.zip 2) 进入 bin 目录 3) 运行 solr.cmd start 4) 测试 solr 服务启动:访问 http:/localhost:8983/solr 5) 停止 solr.cmd stop -p 8983 名词解释:名词解释: Collection 是索引和索引文档的集合,
3、可以类比于数据库中的表,用来管理索引结构 Core 是 Solr 的最小工作单元, 简单的讲, 就是一个正在运行的 Solr 服务器, 一个 Collection 可以只在一个 Core 上运行(单机) ,也可以分布在多个 Core 上运行(Shard Field private String title; Field private Long price; Field private Integer num; Field private List image; Field(created) private Date createTime; Field private Date updated
4、; / 属性名与 solr 文档 field 不一致时 Field(sell_point) private String desc; / 不加Field 的属性不会与 solr 文档对应 private String test; public String getTest() return test; public void setTest(String test) this.test = test; public int getId() return id; public void setId(int id) this.id = id; public String getTitle() re
5、turn title; public void setTitle(String title) this.title = title; public Long getPrice() return price; public void setPrice(Long price) this.price = price; public Integer getNum() return num; public void setNum(Integer num) this.num = num; public List getImage() return image; public void setImage(L
6、ist image) this.image = image; public Date getCreateTime() return createTime; public void setCreateTime(Date createTime) this.createTime = createTime; public Date getUpdated() return updated; public void setUpdated(Date updated) this.updated = updated; public String getDesc() return desc; public voi
7、d setDesc(String desc) this.desc = desc; Override public String toString() return Item id= + id + , title= + title + , price= + price + , num= + num + , image= + image + , createTime= + createTime + , updated= + updated + , desc= + desc + , test= + test + ; 注意:故意将此 Pojo 的属性与 Manage 模块以及 Web 模块的 Item
8、 的属性做的不一致 3) 新增或更新文档新增或更新文档 4) 查询文档查询文档 5) 删除文档删除文档 1.1.9 利用利用Solrj将后台数据导入将后台数据导入Solr索引服务索引服务 1.21.2 实现商品全文检索功能实现商品全文检索功能 1.2.1 创建创建jt-search工程工程 引用了 solr-solrj,它将 httpclient 依赖进来。实际 solrj 内部就是通过 httpclient 来实现两个系 统之间的交互。 1.2.2 整合整合spring框架框架 applicationContext-solrj.xml 1.2.3 配置配置HOSTS 1.2.4 配置配置ng
9、inx #全文搜索服务器 server listen 80; server_name ; #charset koi8-r; #access_log logs/host.access.log main; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location / proxy_pass http:/127.0.0.1:8085; proxy_conn
10、ect_timeout 600; proxy_read_timeout 600; 1.2.5 实现实现pojo /jt-search/src/main/java/com/jt/search/pojo/Item.java 代码略 1.2.6 实现实现Controller /jt-search/src/main/java/com/jt/search/controller/SearchController.java package com.jt.search.controller; import org.springframework.beans.factory.annotation.Autowir
11、ed; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import mon.vo.SysResult; import com.jt.search.service.SearchS
12、ervice; Controller public class SearchController Autowired private SearchService searchService; RequestMapping(search) ResponseBody public SysResult search(String q, Integer page, RequestParam(defaultValue=10) Integer rows) return searchService.search(q, page, rows); 1.2.7 实现实现Service /jt-search/src
13、/main/java/com/jt/search/service/SearchService.java package com.jt.search.service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import mons.lang.StringUtils; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrS
14、erverException; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.client.solrj.response.QueryResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import mon.vo.SysResult; import com.jt.search.pojo.Item;
15、Service public class SearchService Autowired private HttpSolrServer server; public SysResult search(String q, Integer page, Integer rows) SolrQuery query = new SolrQuery(q); query.setStart(page - 1) * rows); query.setRows(rows); query.setHighlight(true); query.addHighlightField(title); query.setHigh
16、lightSimplePre(); query.setHighlightSimplePost(); try QueryResponse response = server.query(query); List list = response.getBeans(Item.class); ListMap resultList = new ArrayList(); for (Item i : list) MapString, List map = response.getHighlighting().get(String.valueOf(i.getId(); / System.out.println
17、(map); if (map != null Map item = new HashMap(); item.put(id, i.getId(); item.put(title, i.getTitle(); item.put(num, i.getNum(); item.put(sellPoint, i.getDesc(); item.put(price, i.getPrice(); item.put(created, i.getCreateTime(); item.put(updated, i.getUpdated(); item.put(image, i.getImage()!=null?St
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- solr 入门 实战
限制150内