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下载(下载直接可用)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章