`
viplisong
  • 浏览: 915 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

sorl 增加删除修改更新

阅读更多
package com.zhen.course.controller;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Test;

public class SolrJTest {
	SolrClient solrclient;

	public SolrJTest(String solrURL) {

		this.solrclient = new HttpSolrClient(solrURL);
	}

	public void close() {
		try {
			solrclient.close();
		} catch (IOException e) {

			e.printStackTrace();
		}
	}

	@Test
	public void addDucument() throws IOException {
		Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
		for (int i = 1; i < 100; i++) {
			SolrInputDocument doc = new SolrInputDocument();
			doc.addField("id", i * 100);
			doc.addField("name", "搜狐网" + i);
			doc.addField("price", 100 * i);
			doc.addField("text", "搜狗社区" + i);
			docs.add(doc);
		}
		try {
			solrclient.add("sohu", docs);
			solrclient.commit("sohu");
		} catch (SolrServerException e) {
			e.printStackTrace();
		}
	}

	@Test
	public void queryDocuments() {
		SolrQuery params = new SolrQuery();
		params.set("q", "*:*");
		params.set("start", 0);
		params.set("rows", 8);
		params.set("sort", "id asc");
		try {
			QueryResponse rsp = solrclient.query(params);
			SolrDocumentList docs = rsp.getResults();
			System.out.println("params:" + params);
			System.out.println("num:" + docs.getNumFound());
			System.out.println("time:" + rsp.getQTime());
			for (SolrDocument doc : docs) {
				int id = (int) doc.getFieldValue("id");
				String name = (String) doc.getFieldValue("name");
				String price = String.valueOf(doc.getFieldValue("price"));
				String text = (String) doc.getFieldValue("text");
				System.out.println("id:" + id + " name:" + name + " price:" + price + " text:" + text);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Test
	public void deleteById(String id) {
		try {
			UpdateResponse rsp = solrclient.deleteById(id);
			solrclient.commit();
			System.out.println("delete id:" + id + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
		} catch (SolrServerException | IOException e) {
			e.printStackTrace();
		}
	}

	public void deleteByQuery(String query) {

		try {
			UpdateRequest commit = new UpdateRequest();
			commit.deleteByQuery(query);
			commit.setCommitWithin(1000);// 在毫秒内提交
			commit.process(solrclient);
		} catch (SolrServerException | IOException e) {
			e.printStackTrace();
		}

	}

	public void deleteByQuery2(String query) {

		try {

			solrclient.deleteByQuery("sohu", query);
			solrclient.commit("sohu");
		} catch (SolrServerException | IOException e) {
			e.printStackTrace();
		}

	}

	public void updateDocuments(int id, String fieldName, Object fieldValue) {
		HashMap<String, Object> oper = new HashMap<String, Object>();
		// 多值更新方法
		// List<String> mulitValues = new ArrayList<String>();
		// mulitValues.add(fieldName);
		// mulitValues.add((String)fieldValue);
		oper.put("set", fieldValue);

		SolrInputDocument doc = new SolrInputDocument();
		doc.addField("id", id);
		doc.addField(fieldName, oper);
		try {
			solrclient.add("sohu", doc);
			solrclient.commit("sohu");

		} catch (SolrServerException | IOException e) {
			e.printStackTrace();
		}

	}

	public static void main(String args[]) throws IOException {

		SolrJTest test = new SolrJTest("http://localhost:8080/solr");

		// add
		test.addDucument();

		// delete
		// test.deleteById("200");
		test.deleteByQuery("name:user3");
		// update
		test.updateDocuments(1, "name", "搜狐视频");

		// query
		test.queryDocuments();

		test.close();
	}
}

 

分享到:
评论

相关推荐

    sorl安装文档-sorl安装文档

    - `/update`: 用于索引维护(添加、修改、删除等操作)。 - `/select`: 用于执行搜索查询。 - 可以在`requestHandler`标签中设置默认的查询参数,例如`rows`表示返回的结果条数,默认为10条。 #### 四、总结 ...

    sorl 安装包

    除了基本的添加和查询,sorl还支持更复杂的查询语法、过滤器、排序、高亮显示等特性,以满足各种搜索需求。 在实际应用中,为了提高性能和可用性,你可能需要考虑Solr的集群配置,例如设置多个副本、使用Sharding来...

    sorl详细搭建配置

    文档内有详细的sorl搭建的步骤

    sorl的安装与配置详解.pdf

    在技术文档《sorl的安装与配置详解.pdf》中,详细介绍了如何在CentOS 7操作系统上安装和配置Solr,以及如何进行基本的中文分析器配置。接下来,我们将根据文件内容详细说明安装和配置Solr的关键知识点。 首先,安装...

    sorl学习笔记及相关教程

    2. 更新索引:支持实时更新,包括添加、删除和修改文档。 3. 分区索引:通过Sharding技术,将大索引分散到多个服务器上,提高查询效率。 四、查询与过滤 1. 查询语法:SOLR支持丰富的查询语法,如布尔运算符(AND、...

    sorl单点环境搭建

    - lib:如果需要添加自定义库,可以放在这里。 创建好核心目录后,需要在solr.xml中注册这个核心。在标签内添加一个标签,指定名称和目录路径。 启动Solr服务器,可以进入bin目录,运行如下命令(根据操作系统可能...

    sorl1下载4.10.3安装详情都有.zip

    - `solrconfig.xml`: 设置 Solr 服务器的行为,如查询处理、更新处理等。 - `managed-schema`: 自动管理字段的现代替代品,从 Solr 5 开始推荐使用。 ### 4. 启动 Solr 服务器 进入 `example` 目录,然后启动 Solr...

    Python库 | sorl-thumbnail-12.1c.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:sorl-thumbnail-12.1c.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Sorl8 所需要 ik-analyzer jar包以及配置文件和中文字典

    Sorl8版本 所需要 ik-analyzer jar包以及配置文件和中文字典 , 包括如下文件 ik-analyzer最新包:ik-analyzer-7.7.1.jar ik-analyzer配置文件:IKAnalyzer.cfg.xml 扩展字典:hotword.dic 扩展停止词字典:...

    solr定时增量更新jar包1.4

    "solr定时增量更新jar包1.4"是专门为Solr设计的一个组件,它允许用户设置定时任务来自动检测和导入新的或者修改过的数据,从而保持索引与数据库或其他数据源的一致性。 这个组件主要依赖于`apache-solr-...

    Solr数据库插入(全量和增量)索引

    增量索引是指将新添加或更新的数据插入 Solr 索引库中,一般用于批量更新数据的情况。在这种情况下,我们需要将新添加或更新的数据从数据源中提取出来,然后将其插入 Solr 索引库中。增量索引的优点是可以实时地更新...

    Spring Boot集成Sorl搜索客户端的实现代码

    在本文中,我们将深入探讨如何在Spring Boot应用中集成Sorl(Apache Solr)作为搜索客户端。Apache Solr是一个开源的全文搜索引擎,它能够快速处理大量数据,并提供高效的搜索功能。Spring Boot通过其`spring-boot-...

    sorl-thumbnail-12.9.0.tar.gz.tar

    sorl-thumbnail-12.9.0.tar.gz.tar

    sorl-thumbnail:Django的缩略图

    Django的缩图。 功能一览 遵循支持Django 2.2、3.0和3.1 Python 3支持 ... 如果您需要开发支持或想与其他开发人员讨论,请通过freenode.net或Gitter上的#sorl-thumnbnail频道加入我们。 有关发行版更

    sorl企业级检索服务部署-快速检索

    同时,SOLR还提供了实时索引更新和热备份策略,以适应不断变化的数据。 在实际应用中,我们还需要关注性能调优。这包括优化索引结构(如使用多字段索引、倒排索引等)、调整缓存策略、优化查询参数等。同时,监控...

    sorl in action (最新版)

    为了提升搜索性能和可用性,Solr支持集群部署,即通过增加服务器节点来分散负载。在本书的高级章节中,读者将了解到如何在实际环境中部署和优化Solr集群。 ### 社区与源码 Solr有一个活跃的社区,开发者可以在社区...

    sorl-watermark:基于图像的水印缩略图

    单一水印sorl-水印为sorl-thumbnail添加了对水印的支持。 支持: Django 1.3+(已在Django 1.10.4到2.1上进行了测试) Soul-Thumbnail 11+(经12.4a1至12.5.0测试) 枕头3+(经过3、4.2和5的测试) Python 2.7至3.7 ...

    sorl-thumbnail-serializer-field:与sorl和Django REST Framework一起使用的图像序列化器字段

    sorl_thumbnail_serializer快速开始将'sorl_thumbnail_serializer'添加到项目的settings.py文件中已安装应用程序的列表中。 确保您已经安装并配置了和 ,如果现在还没有安装和配置的话。 将HyperlinkedSor

    跟益达学Solr5之批量索引JSON数据

    《Solr5批量索引JSON数据详解》 在大数据时代,高效检索与分析大量文本信息是企业业务中不可或缺的一部分。Apache Solr,作为一款强大的开源搜索引擎,提供了对JSON等多格式数据的快速索引和查询能力。...

    django-oscar-easy-thumbnail:这个包将把所有为 sorl-thumbnails 添加的模板标签替换为 easy-thumbnails

    7. **集成与迁移**:将项目中的 sorl-thumbnails 替换为 easy-thumbnails 可能涉及到模板文件的修改、配置文件的更新以及代码的适配,确保整个系统能够正常运行。 8. **测试与调试**:进行这样的替换后,需要通过...

Global site tag (gtag.js) - Google Analytics