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(); } }
相关推荐
- `/update`: 用于索引维护(添加、修改、删除等操作)。 - `/select`: 用于执行搜索查询。 - 可以在`requestHandler`标签中设置默认的查询参数,例如`rows`表示返回的结果条数,默认为10条。 #### 四、总结 ...
除了基本的添加和查询,sorl还支持更复杂的查询语法、过滤器、排序、高亮显示等特性,以满足各种搜索需求。 在实际应用中,为了提高性能和可用性,你可能需要考虑Solr的集群配置,例如设置多个副本、使用Sharding来...
文档内有详细的sorl搭建的步骤
在技术文档《sorl的安装与配置详解.pdf》中,详细介绍了如何在CentOS 7操作系统上安装和配置Solr,以及如何进行基本的中文分析器配置。接下来,我们将根据文件内容详细说明安装和配置Solr的关键知识点。 首先,安装...
2. 更新索引:支持实时更新,包括添加、删除和修改文档。 3. 分区索引:通过Sharding技术,将大索引分散到多个服务器上,提高查询效率。 四、查询与过滤 1. 查询语法:SOLR支持丰富的查询语法,如布尔运算符(AND、...
- lib:如果需要添加自定义库,可以放在这里。 创建好核心目录后,需要在solr.xml中注册这个核心。在标签内添加一个标签,指定名称和目录路径。 启动Solr服务器,可以进入bin目录,运行如下命令(根据操作系统可能...
- `solrconfig.xml`: 设置 Solr 服务器的行为,如查询处理、更新处理等。 - `managed-schema`: 自动管理字段的现代替代品,从 Solr 5 开始推荐使用。 ### 4. 启动 Solr 服务器 进入 `example` 目录,然后启动 Solr...
资源分类:Python库 所属语言:Python 资源全名:sorl-thumbnail-12.1c.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Sorl8版本 所需要 ik-analyzer jar包以及配置文件和中文字典 , 包括如下文件 ik-analyzer最新包:ik-analyzer-7.7.1.jar ik-analyzer配置文件:IKAnalyzer.cfg.xml 扩展字典:hotword.dic 扩展停止词字典:...
"solr定时增量更新jar包1.4"是专门为Solr设计的一个组件,它允许用户设置定时任务来自动检测和导入新的或者修改过的数据,从而保持索引与数据库或其他数据源的一致性。 这个组件主要依赖于`apache-solr-...
增量索引是指将新添加或更新的数据插入 Solr 索引库中,一般用于批量更新数据的情况。在这种情况下,我们需要将新添加或更新的数据从数据源中提取出来,然后将其插入 Solr 索引库中。增量索引的优点是可以实时地更新...
在本文中,我们将深入探讨如何在Spring Boot应用中集成Sorl(Apache Solr)作为搜索客户端。Apache Solr是一个开源的全文搜索引擎,它能够快速处理大量数据,并提供高效的搜索功能。Spring Boot通过其`spring-boot-...
sorl-thumbnail-12.9.0.tar.gz.tar
Django的缩图。 功能一览 遵循支持Django 2.2、3.0和3.1 Python 3支持 ... 如果您需要开发支持或想与其他开发人员讨论,请通过freenode.net或Gitter上的#sorl-thumnbnail频道加入我们。 有关发行版更
同时,SOLR还提供了实时索引更新和热备份策略,以适应不断变化的数据。 在实际应用中,我们还需要关注性能调优。这包括优化索引结构(如使用多字段索引、倒排索引等)、调整缓存策略、优化查询参数等。同时,监控...
为了提升搜索性能和可用性,Solr支持集群部署,即通过增加服务器节点来分散负载。在本书的高级章节中,读者将了解到如何在实际环境中部署和优化Solr集群。 ### 社区与源码 Solr有一个活跃的社区,开发者可以在社区...
单一水印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快速开始将'sorl_thumbnail_serializer'添加到项目的settings.py文件中已安装应用程序的列表中。 确保您已经安装并配置了和 ,如果现在还没有安装和配置的话。 将HyperlinkedSor
《Solr5批量索引JSON数据详解》 在大数据时代,高效检索与分析大量文本信息是企业业务中不可或缺的一部分。Apache Solr,作为一款强大的开源搜索引擎,提供了对JSON等多格式数据的快速索引和查询能力。...
7. **集成与迁移**:将项目中的 sorl-thumbnails 替换为 easy-thumbnails 可能涉及到模板文件的修改、配置文件的更新以及代码的适配,确保整个系统能够正常运行。 8. **测试与调试**:进行这样的替换后,需要通过...