solr 字段更新 java_Solr局部或指定字段更新之set用法

packagecom.sekk.kk.util.search.solr.test;importjava.io.IOException;importjava.util.ArrayList;importjava.util.Date;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importorg.apache.lucene.index.Term;importorg.apache.lucene.search.BooleanClause;importorg.apache.lucene.search.BooleanQuery;importorg.apache.lucene.search.NumericRangeQuery;importorg.apache.lucene.search.WildcardQuery;importorg.apache.solr.client.solrj.SolrQuery;importorg.apache.solr.client.solrj.SolrQuery.ORDER;importorg.apache.solr.client.solrj.SolrServer;importorg.apache.solr.client.solrj.SolrServerException;importorg.apache.solr.client.solrj.impl.CloudSolrServer;importorg.apache.solr.client.solrj.impl.HttpSolrServer;importorg.apache.solr.client.solrj.response.QueryResponse;importorg.apache.solr.client.solrj.response.UpdateResponse;importorg.apache.solr.common.SolrDocument;importorg.apache.solr.common.SolrDocumentList;importorg.apache.solr.common.SolrInputDocument;importorg.apache.solr.common.params.MapSolrParams;importorg.apache.solr.common.params.SolrParams;importcom.sekk.kk.util.search.solr.SolrManager;importcom.linktong.util.format.DateFormat;importcom.linktong.util.validate.Validate;/**

*/

public classTestSolr {public static voidmain(String[] args) {//getSolrServer();

update();//query();//delete();//multiQuery();//conditionQuery();//deleteIndex4bbsUrl();//multiThreadDeleteIndex4bbsUrl();

}public static voidupdate() {try{

String url= "http://192.168.0.237:8983/solr/weibo";

SolrServer server= newHttpSolrServer(url);//String zkHost = "192.168.0.237:2181/solr";//CloudSolrServer server = new CloudSolrServer(zkHost);//server.setDefaultCollection("weibo");//SolrInputDocument doc1 = new SolrInputDocument();//doc1.addField("id", "1");//doc1.addField("title", "云南xxx科技");//doc1.addField("cat", "企业信息门户,元数据,数字沙盘,知识管理");//

//SolrInputDocument doc2 = new SolrInputDocument();//doc2.addField("id", "2");//doc2.addField("title", "胡启稳");//doc2.addField("cat", "知识管理,企业信息门户,云南,昆明");//

//SolrInputDocument doc3 = new SolrInputDocument();//doc3.addField("id", "3");//doc3.addField("title", "liferay");//doc3.addField("test_s", "这个内容能添加进去么?这是动态字段呀");

SolrInputDocument doc1= newSolrInputDocument();

doc1.addField("ID".toUpperCase(), "111");//doc1.addField("title".toUpperCase(), "云南xxx科技");

doc1.addField("CONTENT".toUpperCase(), "企业信息门户 云南 元数据 数字沙盘 知识管理");

doc1.addField("ANALYKEYWORDLIST".toUpperCase(), "企业信息门户 云南 元数据 数字沙盘 知识管理");//局部更新

SolrInputDocument doc2 = newSolrInputDocument();

doc2.addField("ID".toUpperCase(), "50fdd2d7c9dc111541755740");//doc1.addField("title".toUpperCase(), "云南xxx科技");

Map operationMap = new HashMap();

operationMap.put("set", "adasdasdsad");

doc2.addField("CONTENT".toUpperCase(), operationMap);//doc2.addField("ANALYKEYWORDLIST".toUpperCase(), "企业信息门户 云南 元数据 数字沙盘 知识管理");//SolrInputDocument doc2 = new SolrInputDocument();//doc2.addField("id".toUpperCase(), "2");//doc2.addField("title".toUpperCase(), "胡启稳");//doc2.addField("content".toUpperCase(), "知识管理 企业信息门户 云南 昆明");//

//SolrInputDocument doc3 = new SolrInputDocument();//doc3.addField("id".toUpperCase(), "3");//doc3.addField("title".toUpperCase(), "liferay");//doc3.addField("content".toUpperCase(),//"这个内容能添加进去么 云南 这是动态字段呀");

List docs= newArrayList();//docs.add(doc1);

docs.add(doc2);//docs.add(doc3);

UpdateResponse updateResponse=server.add(docs);

System.out.println("updateResponse=" +updateResponse);

server.commit();

server.shutdown();

}catch(SolrServerException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}public static voidquery() {

String url= "http://192.168.0.237:8983/solr";

SolrServer server= newHttpSolrServer(url);

SolrQuery query= new SolrQuery("云南");

Map map = new HashMap();//map.put(FacetParams.FACET_DATE, "manufacturedate_dt");//map.put(FacetParams.FACET_DATE_START, "2004-01-01T00:00:00Z");//map.put(FacetParams.FACET_DATE_END, "2010-01-01T00:00:00Z");//map.put(FacetParams.FACET_DATE_GAP, "+1YEAR");//map.put("indent", "on");

map.put("wt", "xml");//map.put("hl.fl", "name");

SolrParams params = newMapSolrParams(map);

query.add(params);

query.setHighlight(true);try{

QueryResponse response=server.query(query);

SolrDocumentList docs=response.getResults();

System.out.println("文档个数:" +response);

System.out.println("文档个数:" +docs.getNumFound());

System.out.println("查询时间:" +response.getQTime());

System.out.println(docs);for(SolrDocument doc : docs) {

System.out.println(doc);

System.out.println("id: " + doc.getFieldValue("id"));

System.out.println("title: " + doc.getFieldValue("title"));

System.out.println("cat: " + doc.getFieldValue("cat"));

System.out.println("test_s: " + doc.getFieldValue("test_s"));

System.out.println();

}

}catch(Exception e) {//TODO: handle exception

}

}public static voidconditionQuery() {//test lucene expression

BooleanQuery bQuery = newBooleanQuery();//test range expression// //+LPUBLISHTIME1:{1 TO 3}//NumericRangeQuery numRangeQuery1 =//NumericRangeQuery.newIntRange("lpublishtime1".toUpperCase(), 1, 3,//false, false);//bQuery.add(numRangeQuery1, BooleanClause.Occur.MUST);//System.out.println(bQuery);//

// //+LPUBLISHTIME2:[1 TO 3}//NumericRangeQuery numRangeQuery2 =//NumericRangeQuery.newIntRange("lpublishtime2".toUpperCase(), 1, 3,//true, false);//bQuery.add(numRangeQuery2, BooleanClause.Occur.MUST);//System.out.println(bQuery);//

// //+LPUBLISHTIME2:[1 TO 3]//NumericRangeQuery numRangeQuery3 =//NumericRangeQuery.newIntRange("lpublishtime2".toUpperCase(), 1, 3,//true, true);//bQuery.add(numRangeQuery3, BooleanClause.Occur.MUST);//System.out.println(bQuery);

String url= "http://61.152.33.19:8983/solr/weibo";//String url = "http://192.168.0.237:8983/solr/weibo";//String url = "http://192.168.0.237:8983/solr/weibo";//SolrServer server = new HttpSolrServer(url);

HttpSolrServer server = newHttpSolrServer(url);

StringBuilder q= newStringBuilder();//"股市 OR( 股票 AND 股市) OR 股市"//q.append(" +");//q.append("股市 OR( 股票 AND 股市) OR 股市");//q.append("ANALYKEYWORDLIST:云南");

q.append("*:*");//q.append(" +");//q.append("URL:-http*");//q.append(" +");//q.append("ACCOUNT:dsfewfwefpink");//q.append(" +");//q.append("LPUBLISHTIME:[1356577413000 TO 1356577413001}");//q.append("LPUBLISHTIME:[1356577413000 TO 1356577413000]");

SolrQuery query= newSolrQuery();//Map map = new HashMap();//map.put("wt", "xml");//query.set("wt", "xml");//query.add("fq", "-URL:http://*");//"云南"//map.put("hl.fl", "name");//SolrParams params = new MapSolrParams(map);//query.add(params);//query.setHighlight(true);

int start = 0;int rows = 10;

query.setStart(start);

query.setRows(rows);

query.setQuery(q.toString());//Date parseDate = null;//try {//parseDate = DateFormat.parseDate("2013-01-15 00:00:00");//} catch (Exception e1) {// //TODO Auto-generated catch block//e1.printStackTrace();//}//query.set("fq", "lpublishtime".toUpperCase() + ":[" +//parseDate.getTime() + " TO *]");//query.addSortField("lpublishtime".toUpperCase(), ORDER.desc);

try{//query.setHighlight(true)// //设置开头//.addHighlightField("CONTENT")//高亮字段//.setHighlightSimplePre("").setHighlightSimplePost("")// //设置结尾//.setStart(0).setRows(10);//设置行数//

// //设置高亮的哪些区域//query.setParam("hl.fl", "CONTENT");

QueryResponse response=server.query(query);

SolrDocumentList docs=response.getResults();//SolrDocumentList list = response.getResults();//

//System.out.println("高亮显示:");//for (SolrDocument sd : list) {//String id = (String) sd.getFieldValue("ID");//if (response.getHighlighting().get(id) != null) {//System.out.println(response.getHighlighting().get(id).get("CONTENT"));//

//}//}

System.out.println("文档个数:" +response);

System.out.println("文档个数:" +docs.getNumFound());

System.out.println("查询时间:" +response.getQTime());

System.out.println(docs);for(SolrDocument doc : docs) {

System.out.println(doc);

System.out.println("id: " + doc.getFieldValue("ID"));

System.out.println("title: " + doc.getFieldValue("title"));

System.out.println("CONTENT: " + doc.getFieldValue("CONTENT"));

System.out.println("test_s: " + doc.getFieldValue("test_s"));

System.out.println();

}

}catch(Exception e) {

e.printStackTrace();//TODO: handle exception

}

server.shutdown();

}public static voidmultiQuery() {try{//String url = "http://localhost:80/solr";//SolrServer server = new HttpSolrServer(url);

String zkHost= "192.168.0.237:2181/solr";

SolrServer server= newCloudSolrServer(zkHost);//String url = "http://localhost:80/solr";

SolrQuery query= new SolrQuery("云南");//SolrQuery query = new SolrQuery();//Map map = new HashMap();// //map.put(FacetParams.FACET_DATE, "manufacturedate_dt");// //map.put(FacetParams.FACET_DATE_START, "2004-01-01T00:00:00Z");// //map.put(FacetParams.FACET_DATE_END, "2010-01-01T00:00:00Z");// //map.put(FacetParams.FACET_DATE_GAP, "+1YEAR");// //map.put("indent", "on");//map.put("wt", "xml");// //map.put("hl.fl", "name");//SolrParams params = new MapSolrParams(map);//query.add(params);//query.setHighlight(true);

String shards= "localhost:80/solr,localhost:80/solr/weibo";

Map map = new HashMap();

map.put("q", "*:*");

map.put("collection", "weibo");//map.put("shards", shards);//SolrParams params = new MapSolrParams(map);//query.add(params);

SolrParams solrParams= newMapSolrParams(map);//ModifiableSolrParams solrParams = new ModifiableSolrParams();//solrParams.set("q", "*:*");//solrParams.set("shards", shards);//String shards = "localhost:8983/solr,localhost:7574/solr";//StringBuffer request = new StringBuffer();//request.append("&q=" + query);//request.append("&shards=" + shards);//SolrParams solrParams =//SolrRequestParsers.parseQueryString(request.toString());

QueryResponse response=server.query(solrParams);//QueryResponse response = server.query(query);

SolrDocumentList docs =response.getResults();

System.out.println("文档个数:" +response);

System.out.println("文档个数:" +docs.getNumFound());

System.out.println("查询时间:" +response.getQTime());

System.out.println(docs);for(SolrDocument doc : docs) {

System.out.println(doc);

System.out.println("id: " + doc.getFieldValue("id"));

System.out.println("title: " + doc.getFieldValue("title"));

System.out.println("content: " + doc.getFieldValue("content"));

System.out.println("test_s: " + doc.getFieldValue("test_s"));

System.out.println();

}//release the resource

server.shutdown();

}catch(Exception e) {//TODO: handle exception

e.printStackTrace();

}

}public static voiddelete() {try{//不指定core,solr会采用默认配置collection1

String url = "http://61.152.33.19:8983/solr/bbs";//String url = "http://192.168.0.237:8983/solr/weibo";// //String url = "http://localhost:80/solr/weibo";//SolrServer server = new HttpSolrServer(url);//String zkHost = "192.168.0.237:2181/solr";//CloudSolrServer server = new CloudSolrServer(zkHost);//server.setDefaultCollection("weibo");

HttpSolrServer server = newHttpSolrServer(url);

Map map = new HashMap();

map.put("q", "*:*");

map.put("collection", "weibo");

SolrParams solrParams= newMapSolrParams(map);//UpdateResponse updateResponse = server.deleteByQuery(solrParams);//UpdateResponse updateResponse = server.deleteByQuery("*:*");//UpdateResponse updateResponse = server.deleteByQuery("*:*");//System.out.println(updateResponse);//不提交不会生效//updateResponse = server.commit();//System.out.println(updateResponse);

server.shutdown();

}catch(Exception e) {//TODO: handle exception

e.printStackTrace();

}

}static final String solrUrl89 = "http://61.152.33.19:8983/solr";static final String solrUrl35 = "http://61.159.33.33:8983/solr";static final String solrUrl34 = "http://61.122.116.44:8983/solr";public static voidmultiThreadDeleteIndex4bbsUrl() {final String url1 = solrUrl35 + "/bbs";final String url2 = solrUrl34 + "/bbs";final String url3 = solrUrl89 + "/bbs";

String keyword= "*:*";//String keyword = "我要检测 OR 我要 OR 我要检测管理 OR 您点击 OR 要检测";

newDeleteSolrIndexTool4BBSUrl(url1, keyword).start();//new DeleteSolrIndexTool4BBSUrl(url2, keyword).start();//new DeleteSolrIndexTool4BBSUrl(url3, keyword).start();

}public static voiddeleteIndex4bbsUrl() {int dataCount = 0, deleteCount = 0, deleteSuccCount = 0;int start = 0;int rows = 100;//不指定core,solr会采用默认配置collection1

String url = "http://61.152.33.19:8983/solr/bbs";//String url = "http://192.168.0.237:8983/solr/weibo";// //String url = "http://localhost:80/solr/weibo";//SolrServer server = new HttpSolrServer(url);//String zkHost = "192.168.0.237:2181/solr";//CloudSolrServer server = new CloudSolrServer(zkHost);//server.setDefaultCollection("weibo");

HttpSolrServer server = newHttpSolrServer(url);boolean isDelete = true;while(isDelete) {try{//Map map = new HashMap();//map.put("q", "*:*");//map.put("collection", "weibo");

SolrQuery query= newSolrQuery();

query.setStart(start);

query.setRows(rows);

query.add("fl", "ID,LPUBLISHTIME,SITE,URL");//query.setQuery("*:*");

query.setQuery("我要检测 OR 我要 OR 我要检测管理 OR 您点击 OR 要检测");

System.out.println("开始查询..." +query);

QueryResponse response=server.query(query);

SolrDocumentList docs=response.getResults();if(Validate.isEmpty(docs)) {

System.out.println("查询为空! " +query);break;

}

System.out.println("文档个数:" + docs.getNumFound() + ",查询时间:" +response.getQTime());//System.out.println(docs);

for(SolrDocument doc : docs) {

dataCount++;//System.out.println(doc);

System.out.println("id: " + doc.getFieldValue("id".toUpperCase()));

String id= (String) doc.getFieldValue("id".toUpperCase());

String dataUrl= (String) doc.getFieldValue("url".toUpperCase());if (dataUrl.indexOf("http://") == -1) {

deleteCount++;

System.out.println("delete " + id + " start...");try{

UpdateResponse updateResponse= server.deleteByQuery("ID:" +id);//不提交不会生效

updateResponse =server.commit();

deleteSuccCount++;

System.out.println("delete " +updateResponse);

}catch(Exception e) {

System.out.println("delete " + id + " error");

e.printStackTrace();

}

System.out.println("delete " + id + " end");

}//System.out.println("title: " +//doc.getFieldValue("title"));//System.out.println("content: " +//doc.getFieldValue("content"));//System.out.println("test_s: " +//doc.getFieldValue("test_s"));//System.out.println();

}//SolrParams solrParams = new MapSolrParams(map);//UpdateResponse updateResponse =//server.deleteByQuery(solrParams);//UpdateResponse updateResponse = server.deleteByQuery("*:*");//UpdateResponse updateResponse = server.deleteByQuery("*:*");//System.out.println(updateResponse);// //不提交不会生效//updateResponse = server.commit();//System.out.println(updateResponse);

}catch(Exception e) {

System.out.println("deleteIndex4bbsUrl handle error:" +e.getMessage());//TODO: handle exception

e.printStackTrace();

}

start+=rows;

System.out.println("start=" + start + ",rows=" + rows + ",dataCount=" + dataCount + ",deleteCount=" + deleteCount + ",deleteSuccCount=" +deleteSuccCount);

}

System.out.println("运行完毕~!");

System.out.println("start=" + start + ",rows=" + rows + ",dataCount=" + dataCount + ",deleteCount=" + deleteCount + ",deleteSuccCount=" +deleteSuccCount);try{

server.shutdown();

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}public static voidgetSolrServer() {

SolrManager solrManager= newSolrManager();//String coreName = "collection1";

String coreName = "weibo";try{

SolrServer solrServer=solrManager.getSolrServer(coreName);

System.out.println(solrServer);//Use solrServer operation

} catch(SolrServerException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}class DeleteSolrIndexTool4BBSUrl extendsThread {privateString url;privateString logName;privateString keyword;publicDeleteSolrIndexTool4BBSUrl(String url, String keyword) {super();this.url =url;this.keyword =keyword;

}public voidrun() {this.logName =Thread.currentThread().getName();int dataCount = 0, deleteCount = 0, deleteSuccCount = 0;int start = 0;int rows = 100;//不指定core,solr会采用默认配置collection1

HttpSolrServer server= newHttpSolrServer(url);boolean isDelete = true;while(isDelete) {try{

SolrQuery query= newSolrQuery();

query.setStart(start);

query.setRows(rows);

query.add("fl", "ID,LPUBLISHTIME,SITE,URL");//query.setQuery("*:*");//query.setQuery("我要检测 OR 我要 OR 我要检测管理 OR 您点击 OR 要检测");

query.setQuery(keyword);

System.out.println(logName+ " " + "开始查询..." +query);

QueryResponse response=server.query(query);

SolrDocumentList docs=response.getResults();if(Validate.isEmpty(docs)) {

System.out.println(logName+ " " + "查询为空! " +query);break;

}

System.out.println(logName+ " " + "文档个数:" + docs.getNumFound() + ",查询时间:" +response.getQTime());//System.out.println(docs);

for(SolrDocument doc : docs) {

dataCount++;//System.out.println(doc);

System.out.println(logName + " " + "id: " + doc.getFieldValue("id".toUpperCase()));

String id= (String) doc.getFieldValue("id".toUpperCase());

String dataUrl= (String) doc.getFieldValue("url".toUpperCase());if (dataUrl.indexOf("http://") == -1) {

deleteCount++;

System.out.println(logName+ " " + "delete " + id + " start...");try{

UpdateResponse updateResponse= server.deleteByQuery("ID:" +id);//不提交不会生效

updateResponse =server.commit();

deleteSuccCount++;

System.out.println(logName+ " " + "delete " +updateResponse);

}catch(Exception e) {

System.out.println(logName+ " " + "delete " + id + " error");

e.printStackTrace();

}

System.out.println(logName+ " " + "delete " + id + " end");

}

}

}catch(Exception e) {

System.out.println(logName+ " " + "deleteIndex4bbsUrl handle error:" +e.getMessage());//TODO: handle exception

e.printStackTrace();

}

start+=rows;

System.out.println(logName+ " " + "start=" + start + ",rows=" + rows + ",dataCount=" + dataCount + ",deleteCount=" + deleteCount + ",deleteSuccCount=" +deleteSuccCount);

}

System.out.println(logName+ " " + "运行完毕~!");

System.out.println(logName+ " " + "start=" + start + ",rows=" + rows + ",dataCount=" + dataCount + ",deleteCount=" + deleteCount + ",deleteSuccCount=" +deleteSuccCount);try{

server.shutdown();

}catch(Exception e) {//TODO Auto-generated catch block

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值