4.Solr使用Java进行索引库增删改查

环境:Tomcat8部署Solr7.5

使用Java对Solr进行索引库操作,需添入solrJ的jar包,如果是Maven进行项目管理,那是极好的,添加依赖




    org.apache.solr
    solr-solrj
    7.5.0

但如果没有使用Maven管理,那就很坑了,需要手动添加一些依赖的Jar包,这个没用使用Maven的项目,我只能挨个下载并替换成最新版,老版本不行的,同时把老版本删除

地址

4.Solr使用Java进行索引库增删改查_第1张图片

1.查,进行一个简单的查询测试,查询一下Solr索引库的数据条数

// 指定Solr服务指定地址,后期从参数中配置获取
		String SOLR_URL = "http://xxxx:8080/solr/core1/";
		HttpSolrClient solrClient = new HttpSolrClient.Builder(SOLR_URL).withConnectionTimeout(10000).withSocketTimeout(60000).build();
		// 创建Solr查询语句
		SolrQuery solrQuery = new SolrQuery();
		// 设置查询条件
		solrQuery.setQuery("bi_menu_TITLE:"+bi_menu_TITLE);//设置查询关键字q
//		solrQuery.setFields("id,item_name");//显示的字段f
//		solrQuery.setSort("id",SolrQuery.ORDER.desc);//按照id排序
//		solrQuery.setStart(0);//offset
//		solrQuery.setRows(5);//limit
		// 执行查询(传入core核)
		QueryResponse response = solrClient.query(solrQuery);
		// 获取文档列表
		SolrDocumentList documentList = response.getResults();
		// 获取总记录数
		long numFound = documentList.getNumFound();
		System.out.println("总记录数:"+numFound);

查询条件与solr页面功能相同

4.Solr使用Java进行索引库增删改查_第2张图片

2.增/改,在Solr索引库中,如果ID不存在则新增,存在则更新(改),id是每条数据必填项,也必须是唯一的,

批量新增则构建List,单条使用SolrInputDocument即可

// solr服务器地址
		String SOLR_URL = "http://xxxx:8080/solr/core1/";
		HttpSolrClient solrClient = new HttpSolrClient.Builder(SOLR_URL).withConnectionTimeout(10000).withSocketTimeout(60000).build();
		DBConnection dbc = DataSource.getDBConnection(DataSource.CORE_DATASOURCE);
		DDProxy ddp = new DDProxy(dbc, "CORE_MENU");
		List> menuList = ddp.getDBQuery().query("CORE_MENU.solr.query", null);
		List docs = new ArrayList();
		for(Map menu : menuList) {
			// solr添加数据即添加文档doc,构造一篇文档
			SolrInputDocument document = new SolrInputDocument();
			// 向doc中添加字段,需与managed-schema中field(域)对应,其中id必需传入,且不能相同
			document.addField("id",menu.get("MENU_CODE"));
			document.addField("APPL_CODE",menu.get("APPL_CODE"));
			document.addField("MENU_CODE",menu.get("MENU_CODE"));
			document.addField("TITLE",menu.get("TITLE"));
			document.addField("URL",menu.get("URL"));
			docs.add(document);
		}
		solrClient.add(docs);
		solrClient.commit();

3.删,deleteByQuery为索引库中需要删除的数据条件

// solr服务器地址
		String SOLR_URL = "http://xxxx:8080/solr/core1/";
		HttpSolrClient solrClient = new HttpSolrClient.Builder(SOLR_URL).withConnectionTimeout(10000).withSocketTimeout(60000).build();
		// 先清空索引表
		solrClient.deleteByQuery("*:*");//删除条件
		solrClient.commit();
		

solrClient.deleteById(param.get("id").toString());

 

你可能感兴趣的:(Solr(Tomcat),全文搜索Solr)