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

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