淘淘商城系列——使用solrj来测试索引库
来源:互联网 发布:深圳大数据研究院 编辑:程序博客网 时间:2024/06/05 09:08
我们使用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(); }}
执行上面的方法,成功后,我们到Solr首页,点击”Execute Query”按钮,即可查询到我们刚才添加的文本。
大家发现了没有,在查询出来的数据当中没有item_desc字段,这是因为在schema.xml文件中指定该字段不保存,如下图所示,indexed=”true”表示分词存储且可以查询,stored=”false”表示不存储内容,如果stored=”false”,那么该字段就不会随查询结果一起显示,只有当stored=”true”时才会显示。
下面我们来测试通过ID删除文档。所以我们需要在TestSolrJ单元测试类中添加如下测试方法。
@Testpublic 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();}
执行上面的方法,成功后,我们再查询,发现已经没有刚才我们添加的那个文档了,如下图所示。
下面我们再测试另外一种删除方法,由于刚才我们把仅存的一条文档删除了,现在我们再添加两条数据,如下图所示。
现在通过搜索来删除文档,故应在TestSolrJ单元测试类中添加如下测试方法。
@Testpublic 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单元测试类中添加如下测试方法。
@Testpublic 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控制台上看到如下结果。
- 淘淘商城系列——使用solrj来测试索引库
- 淘淘商城系列——使用SolrJ查询索引库
- 学习淘淘商城第四十一课(使用solrj来测试索引库)
- 淘淘商城系列——使用SolrJ管理Solr集群
- 淘淘商城系列——添加商品同步到索引库以及消息机制测试
- 学习淘淘商城第四十五课(使用SolrJ查询索引库)
- 淘淘商城系列——使用JsonView来格式化json字符串
- 淘淘商城系列——使用Spring来管理Redis单机版和集群版
- 淘淘商城系列——使用Nodepad++来编辑我们服务器的配置文件
- 淘淘商城系列——服务调用测试
- 淘淘商城系列——商品搜索功能测试
- 淘淘商城系列——导入商品数据到索引库——dao层
- 淘淘商城系列——导入商品数据到索引库——Service层
- 淘淘商城系列——使用FastDFS-Client客户端进行上传图片的测试
- 淘淘商城系列——导入商品数据到索引库
- 淘淘商城系列——使用maven构建工程
- 淘淘商城系列——redis-desktop-manager的使用
- 淘淘商城系列——使用Jedis操作集群
- 给for循环出来的html绑定事件
- 相对布局
- 简单的POP邮件客户端
- Android布局之线型布局
- leetcode537. Complex Number Multiplication
- 淘淘商城系列——使用solrj来测试索引库
- 关于c语言的传参问题个人见解
- MySQL优化原理
- 机器学习笔记一
- 常用控件Toggle-Switch-SeekBar-RatingBar
- JSONObject text must begin with '{' at character 1 of错误解决
- css绝对定位、相对定位和文档流的那些事(非本人)
- 真机调试出现 application installation failed 错误 解决方案
- EPERM: operation not permitted, symlink '../../'