(转)淘淘商城系列——使用solrj来测试索引库
http://blog.csdn.net/yerenyuan_pku/article/details/72892280
我们使用solrj来操作索引库,一般习惯先建一个单元测试类测试下增删改查方法是否好使,这样可以大大减少出错概率,提升开发效率。
我们的taotao-search-service工程还没有添加对solrj的依赖,因此需要先添加对solrj的依赖,在taotao-search-service工程的pom.xml文件当中添加如下依赖(之所以不用写版本号是因为在taotao-parent工程中已经统一定义好版本号了)。
<!-- solr客户端 -->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
</dependency>

下面我们新建一个测试类TestSolrJ,如下图所示。先行测试添加文档操作。注意:添加的字段必须是schema.xml中定义的。 
为了方便大家复制,现将测试类TestSolrJ的代码贴出。
public class TestSolrJ {
@Test
public void testSolrJAddDocument() throws Exception {
// 创建一个SolrServer对象,即HttpSolrServer对象,需要指定solr服务的url
// 如果有多个collection,则需要指定要操作哪个collection,如果只有一个,可以不指定
SolrServer solrServer = new HttpSolrServer("http://192.168.25.129:8080/solr");
// 创建一个文档对象,即SolrInputDocument对象
SolrInputDocument document = new SolrInputDocument();
// 向文档中添加域,添加域这里面有一个要求,必须有一个id域,域必须在schema.xml中定义
document.addField("id", "test001");
document.addField("item_title", "海尔空调");
document.addField("item_sell_point", "送电暖宝一个哟!");
document.addField("item_price", 10000);
document.addField("item_image", "http://www.123.ipg");
document.addField("item_category_name", "电器");
document.addField("item_desc", "这是一款最新的空调,质量好,值得您信赖!!");
// 把文档写入索引库
solrServer.add(document);
// 提交
solrServer.commit();
}
}
- 1
执行上面的方法,成功后,我们到Solr首页,点击”Execute Query”按钮,即可查询到我们刚才添加的文本。 
大家发现了没有,在查询出来的数据当中没有item_desc字段,这是因为在schema.xml文件中指定该字段不保存,如下图所示,indexed=”true”表示分词存储且可以查询,stored=”false”表示不存储内容,如果stored=”false”,那么该字段就不会随查询结果一起显示,只有当stored=”true”时才会显示。 
下面我们来测试通过ID删除文档。所以我们需要在TestSolrJ单元测试类中添加如下测试方法。
@Test
public void testSolrJDeleteDocument() throws Exception {
// 创建一个SolrServer对象,即HttpSolrServer对象,需要指定solr服务的url
SolrServer solrServer = new HttpSolrServer("http://192.168.25.129:8080/solr");
// 通过id来删除文档
solrServer.deleteById("test001");
// 提交
solrServer.commit();
}
- 1
执行上面的方法,成功后,我们再查询,发现已经没有刚才我们添加的那个文档了,如下图所示。 
下面我们再测试另外一种删除方法,由于刚才我们把仅存的一条文档删除了,现在我们再添加两条数据,如下图所示。 
现在通过搜索来删除文档,故应在TestSolrJ单元测试类中添加如下测试方法。
@Test
public void deleteDocumentByQuery() throws Exception {
// 创建一个SolrServer对象,即HttpSolrServer对象,需要指定solr服务的url
SolrServer solrServer = new HttpSolrServer("http://192.168.25.129:8080/solr");
// 通过价格来删除文档
solrServer.deleteByQuery("item_price:20000");
// 提交
solrServer.commit();
}
执行上面的方法,成功后,我们再查询,发现已经没有价格为20000的那个文档记录了,如下图所示。 
至于修改操作其实就是添加操作,ID一样的,新记录会覆盖老记录,从而达到修改的目的。
下面我们进行查询操作,故应在TestSolrJ单元测试类中添加如下测试方法。
@Test
public void queryDocument() throws Exception {
// 创建一个SolrServer对象,即HttpSolrServer对象,需要指定solr服务的url
SolrServer solrServer = new HttpSolrServer("http://192.168.25.129:8080/solr");
SolrQuery query = new SolrQuery();
query.setQuery("id:test001");
QueryResponse response = solrServer.query(query);
SolrDocumentList list = response.getResults();
for (SolrDocument document : list) {
String id = document.getFieldValue("id").toString();
String title = document.getFieldValue("item_title").toString();
System.out.println(id);
System.out.println(title);
}
}
执行上面的方法,成功后,我们可在Eclipse控制台上看到如下结果。 
- 顶
- 0
- 踩
(转)淘淘商城系列——使用solrj来测试索引库的更多相关文章
- (转)淘淘商城系列——导入商品数据到索引库——Service层
http://blog.csdn.net/yerenyuan_pku/article/details/72894187 通过上文的学习,我相信大家已经学会了如何使用Solrj来操作索引库.本文我们将把 ...
- 使用solrj操作solr索引库
(solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有 ...
- 使用solrj操作solr索引库,solr是lucene服务器
客户端开发 Solrj 客户端开发 Solrj Solr是搭建好的lucene服务器 当然不可能完全满足一般的业务需求 可能 要针对各种的架构和业务调整 这里就需要用到Solrj了 Solrj是Sol ...
- (转) 淘淘商城系列——使用SolrJ查询索引库
http://blog.csdn.net/yerenyuan_pku/article/details/72908538 我们有必要在工程中写查询索引库的代码前先进行必要的测试.我们先到Solr服务页面 ...
- 通过Solrj实现对索引库中数据的局部更新操作
for (UpdateIndexDTO updateIndexDTO : data) { // 局部更新 SolrInputDocument doc = new SolrInputDocument() ...
- JAVAEE——宜立方商城07:Linux上搭建Solr服务、数据库导入索引库、搜索功能的实现
1. 学习计划 1.Solr服务搭建 2.Solrj使用测试 3.把数据库中的数据导入索引库 4.搜索功能的实现 2. Solr服务搭建 2.1. Solr的环境 Solr是java开发. 需要安装j ...
- 商城06——solr索引库搭建&solr搜索功能实现&图片显示问题解决
1. 课程计划 1.搜索工程的搭建 2.linux下solr服务的搭建 3.Solrj使用测试 4.把数据库中的数据导入索引库 5.搜索功能的实现 2. 搜索工程搭建 要实现搜索功能,需要搭建 ...
- (转)淘淘商城系列——使用maven构建工程
http://blog.csdn.net/yerenyuan_pku/article/details/72669269 开发工具和环境 这里,我统一规范一下淘淘商城的开发工具和环境,如下: Eclip ...
- (转) 淘淘商城系列——CMS内容管理系统工程搭建
http://blog.csdn.net/yerenyuan_pku/article/details/72825801 淘淘商城系列——CMS内容管理系统工程搭建 上文我们一起搭建了表现层中的商城门户 ...
随机推荐
- QlikView格式化某一个单元格
QlikView中能够创建透视表和垂直表,或者一般的Table.假如有的时候须要某一个单元格的样式和其它单元格不一样.颜色或者边框宽度等.能够通过下面方式实现: 工具栏里面有个button叫:Desi ...
- 2013:Audio Tag Classification - MIREX Wiki
Contents [hide] 1 Description 1.1 Task specific mailing list 2 Data 2.1 MajorMiner Tag Dataset 2.2 M ...
- Apache Ignite——集合分布式缓存、计算、存储的分布式框架
Apache Ignite内存数据组织平台是一个高性能.集成化.混合式的企业级分布式架构解决方案,核心价值在于可以帮助我们实现分布式架构透明化,开发人员根本不知道分布式技术的存在,可以使分布式缓存.计 ...
- Maven环境配置及命令行打包
一配置环境变量 下载 apache-maven-3.2.5压缩包解压到本地 F:\apache-maven-3.2.5 配置MAVEN_HOME环境变量F:\apache-maven-3.2.5如图 ...
- Java 基础 —— 注解
注解(annotation)不是注释(comment): 注解,是一种元数据(metadata),可为我们在代码中添加信息提供了一种形式化的方法.注解在一定程度上实现了元数据和源代码文件的结合,而不是 ...
- Git-flow 一个简单高效的Git工作流
背景 由于Git的分支比SVN更好管理且更易使用,最近团队从SVN迁移到Git,需要重新规划开发流程,最终确定使用Git-flow工作流,这是目前比较流行的一种分支模型,下面是Git-flow的简易流 ...
- 2-3 原生小程序 - 项目app.json配置
App.json它其实有四五个配置,但是最重要的是pages.windows和tabbar.tabbar是做导航的处理的. 官方推荐的入门配置之一: app.json 它其实有一些字段是限制了这个格式 ...
- 内核的ramdisk
ramdisk 内核中的特性之一,使用缓冲和缓存来加速对磁盘上的文件访问,并加载相应的硬件驱. ramdisk --> ramfs,提高速度 CentOS 5: initrd 工具程序:mkin ...
- 用nginx进行同一个服务器下多域名的负载均衡配置
用nginx进行同一个服务器下多域名的负载均衡配置 Nginx进行http负载均衡的模块是upstream Upstream可以进行多个配置,这样的话可以灵活的配置站点,但是注意的是upstream后 ...
- Python网咯爬虫 — Scrapy框架应用
Scrapy框架 Scrapy是一个高级的爬虫框架,它不仅包括了爬虫的特征,还可以方便地将爬虫数据保存到CSV.Json等文件中. Scrapy用途广泛,可以用于数据挖掘.监测 ...