solr/solrj按id进行索引更新

最近项目要求solr能够实现索引根据id进行field的局部更新,于是在网上查找了些资料,终于找到了方法,并进行了封装,简单分享下主要方法体(这里是通过solr api进行的solrj操作索引):

...

public void UpdateIndex() {

JSONArray content = new JSONArray();

JSONObject json = new JSONObject();

JSONObject set = new JSONObject();

JSONObject set2 = new JSONObject();

JSONObject set3 = new JSONObject();

JSONObject set5 = new JSONObject();

JSONObject inc = new JSONObject();  //在某个字段上递增

JSONObject add1 = new JSONObject();

JSONObject add2 = new JSONObject();

JSONObject add3 = new JSONObject();

JSONObject add4 = new JSONObject();

try {

set.put("set", "测试后1");

set2.put("set", "新家的名字");

set3.put("set", "新家的名字2");

set5.put("set", "修改后的新华书店三孝口");

add1.put("add", "del1"); //{"add":"Cyberpunk"}

add2.put("add", "del2");

add3.put("add", "del3");

add4.put("add", "火锅领导者");

json.put("id", "1")

.put("name_ss", set3)

.put("name_s", set2)

.put("name", set)

.put("ca1_ss", add1)

.put("cat2_ss", add2)

.put("cat3_ss", add3)

.put("content_smart_max_2", add4)

.put("content_smart_max_2", set5);

content.add(json);

System.out.println(content);

System.out.println(json);

} catch (final JSONException e) {

}

sendHttpMessage(Base_URL + "/update", content.toString());

}

@Test

public void test {

UpdateSolrField atmoUpdate = new UpdateSolrField("http://172.37.37.21:8080/solr/core2");

atmoUpdate.AddIndex();

atmoUpdate.UpdateIndex();

}

add:能够在原有的field上增加索引内容,注意,此时的field要为多值;若此field不存在,便会在当前的doc中创建一个field;

inc:能够在原有的field能容上递增

set:替换原有的field索引内容,若此时field不存在,便会在当前doc中创建field。

完整代码类可以到 http://download.csdn.net/detail/u013035314/8825933
下载(下载直接可用)。

时间: 2024-11-04 06:09:35

solr/solrj按id进行索引更新的相关文章

Solr自动生成ID

在Solr中,每一个索引,都要有一个唯一的ID,类似于关系型数据库表中的主键.为了方便创建索引,需要配置自动生成的ID,即UUID. 一.配置schema.xml文件 添加uuid字段类型,修改字段id的类型. <field name="id" type="uuid" indexed="true" stored="true" required="true" multiValued="fals

基于Nutch&amp;Solr定向采集解析和索引搜索的整合技术指南文档

基于Nutch&Solr定向采集解析和索引搜索的整合技术指南文档 内容来源于开源项目: http://git.oschina.net/xautlx/nutch-ajax https://github.com/xautlx/nutch-ajax 如何阅读本文档 本教程文档原始基于Markdown编写,如果你熟悉Markdown文件及相关工具使用,可以直接通过Markdown阅读或编辑工具查看本教程.md格式文件. 由于Markdown语法暂时没有目录支持,如果希望以目录导航方式查看文档,可参考如下

[solr] - SolrJ增删查

使用SolrJ进行对Solr的增.删.查功能. 参考引用: http://wiki.apache.org/solr/Solrj Eclipse中新建一个项目:TestSolr 其中SorlJ的Lib包包括: 代码: 建一个Item Entity package com.my.entity; import java.util.Date; import org.apache.solr.client.solrj.beans.Field; public class Item { @Field priva

搜索引擎系列五:Lucene索引详解(IndexWriter详解、Document详解、索引更新)

一.IndexWriter详解 问题1:索引创建过程完成什么事? 分词.存储到反向索引中 1. 回顾Lucene架构图: 介绍我们编写的应用程序要完成数据的收集,再将数据以document的形式用lucene的索引API创建索引.存储. 这里重点要强调应用代码负责做什么,lucene负责做什么. 2. Lucene索引创建API 图示 通过该图介绍lucene创建索引的核心API:Document.IndexWriter Lucene中要索引的文档.数据记录以document表示,应用程序通过I

重构二维数组。key 是id val 是更新字段

$arr=Array ( 'contract_type' => Array (   '0' => 0, '1' => 0, '2' => 0,'3' => 0, ), 'use_contract' => Array (  '0' => 7,  '1' => 8,  '2' => 9, '3' => 10, ), 'use_name' => Array (   '0' => '合同人1',  '1' => '合同人2',  '2'

solr/solrj之原子更新

lucene本身对原子更新没有太多的介绍,但solr对其进行了封装,这里简单做个介绍:这点操作还是对索引很实用的. 具体在代码中使用如下: /** * 原子更新方式 * */ public static void updateSolrField()throws Exception{ SolrInputDocument doc = new SolrInputDocument(); doc .addField("id", "10");//根据id唯一标识 Map<

solr和hbase结合进行索引搜索

solrcloud集群情况 solrcloud集群已经安装完成. solr版本:5.5.0,zookeeper版本:3.4.6 solr的操作用户.密码: solr/solr123 solr使用的zookeeper安装位置:/opt/zookeeper-3.4.6 solr安装位置:/opt/solr-5.5.0 solr端口:8983 zookeeper端口:9983 5台机器,每台机器上安装的都有solr和zookeeper zookeeper启动:/opt/zookeeper-3.4.6/

JAVAEE——宜立方商城07:Linux上搭建Solr服务、数据库导入索引库、搜索功能的实现

1. 学习计划 1.Solr服务搭建 2.Solrj使用测试 3.把数据库中的数据导入索引库 4.搜索功能的实现 2. Solr服务搭建 2.1. Solr的环境 Solr是java开发. 需要安装jdk. 安装环境Linux. 需要安装Tomcat. 2.2. 搭建步骤 第一步:把solr 的压缩包上传到Linux系统 第二步:解压solr. 第三步:安装Tomcat,解压缩即可. 第四步:把solr部署到Tomcat下. 第五步:解压缩war包.启动Tomcat解压. tail -f ../

基于solr实现hbase的二级索引

一.目的 了解hbase的都知道,由于hbase基于行健有序存储,在查询时使用行健十分高效,然后想要实现关系型数据库那样可以随意组合的多条件查询.查询总记录数.分页等就比较麻烦了.想要实现这样的功能,我们可以采用两种方法: 使用hbase提供的filter, 自己实现二级索引,通过二级索引查询多符合条件的行健,然后再查询hbase. 第一种方法不多说了,使用起来很方便,但是局限性也很大,hbase的filter是直接扫记录的,如果数据范围很大,会导致查询速度很慢.所以如果能先使用行健把记录缩小到