solr wiki文档也有 


 


 


 


 


 


 


 


java code


 


public static void update() {

          try {

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

               SolrServer server = new HttpSolrServer(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 = new SolrInputDocument();

               doc1.addField("ID".toUpperCase(), "50dc4fa4c9dce9e193e87170");

              

              

              

               Map<String, String > operation = new HashMap<String ,String >();

               operation.put("set", "--------------------------");

              

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

               doc1.addField("CONTENT".toUpperCase(), operation);

//               doc1.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 = new ArrayList();

               docs.add(doc1);

               // docs.add(doc2);

               // docs.add(doc3);

//

//               UpdateRequest req = new UpdateRequest();

//              

//               UpdateRequest reqSuc = req.add(doc1);

//              

//               req.process(server);

//              

//              

//               System.out.println(reqSuc);

//               UpdateResponse updateResponse = server.

               server.add(docs);

               server.commit();

          } catch (SolrServerException e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

          } catch (IOException e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

          }


     }


 


 附加代码:


TestSolr.java



Solr局部或指定字段更新之set用法_javaSolr局部或指定字段更新之set用法_java_02


package com.sekk.kk.util.search.solr.test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.NumericRangeQuery;
import org.apache.lucene.search.WildcardQuery;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrQuery.ORDER;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudSolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
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.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.SolrParams;

import com.sekk.kk.util.search.solr.SolrManager;
import com.linktong.util.format.DateFormat;
import com.linktong.util.validate.Validate;

/**
*/
public class TestSolr {
public static void main(String[] args) {
// getSolrServer();

update();
// query();
// delete();
// multiQuery();

// conditionQuery();

// deleteIndex4bbsUrl();
// multiThreadDeleteIndex4bbsUrl();
}

public static void update() {
try {
String url = "http://192.168.0.237:8983/solr/weibo";
SolrServer server = new HttpSolrServer(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 = new SolrInputDocument();
doc1.addField("ID".toUpperCase(), "111");
// doc1.addField("title".toUpperCase(), "云南xxx科技");
doc1.addField("CONTENT".toUpperCase(), "企业信息门户 云南 元数据 数字沙盘 知识管理");
doc1.addField("ANALYKEYWORDLIST".toUpperCase(), "企业信息门户 云南 元数据 数字沙盘 知识管理");

// 局部更新
SolrInputDocument doc2 = new SolrInputDocument();
doc2.addField("ID".toUpperCase(), "50fdd2d7c9dc111541755740");
// doc1.addField("title".toUpperCase(), "云南xxx科技");

Map<String, String> operationMap = new HashMap<String, String>();
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 = new ArrayList();
// 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 void query() {
String url = "http://192.168.0.237:8983/solr";
SolrServer server = new HttpSolrServer(url);

SolrQuery query = new SolrQuery("云南");
Map<String, String> map = new HashMap<String, String>();
// 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);
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 void conditionQuery() {
// test lucene expression
BooleanQuery bQuery = new BooleanQuery();

// 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 = new HttpSolrServer(url);
StringBuilder q = new StringBuilder();

// "股市 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 = new SolrQuery();
// Map<String, String> map = new HashMap<String, String>();
// 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("<span class=’highlight’>").setHighlightSimplePost("</span>")
// // 设置结尾
// .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 void multiQuery() {
try {
// String url = "http://localhost:80/solr";
// SolrServer server = new HttpSolrServer(url);

String zkHost = "192.168.0.237:2181/solr";
SolrServer server = new CloudSolrServer(zkHost);

// String url = "http://localhost:80/solr";

SolrQuery query = new SolrQuery("云南");
// SolrQuery query = new SolrQuery();
// Map<String, String> map = new HashMap<String, String>();
// // 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<String, String> map = new HashMap<String, String>();
map.put("q", "*:*");
map.put("collection", "weibo");
// map.put("shards", shards);

// SolrParams params = new MapSolrParams(map);
// query.add(params);

SolrParams solrParams = new MapSolrParams(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 void delete() {
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 = new HttpSolrServer(url);
Map<String, String> map = new HashMap<String, String>();
map.put("q", "*:*");
map.put("collection", "weibo");

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);

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 void multiThreadDeleteIndex4bbsUrl() {

final String url1 = solrUrl35 + "/bbs";
final String url2 = solrUrl34 + "/bbs";
final String url3 = solrUrl89 + "/bbs";

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

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

public static void deleteIndex4bbsUrl() {

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 = new HttpSolrServer(url);

boolean isDelete = true;
while (isDelete) {
try {

// Map<String, String> map = new HashMap<String, String>();
// map.put("q", "*:*");
// map.put("collection", "weibo");

SolrQuery query = new SolrQuery();

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 void getSolrServer() {
SolrManager solrManager = new SolrManager();
// 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 extends Thread {

private String url;
private String logName;
private String keyword;


public DeleteSolrIndexTool4BBSUrl(String url, String keyword) {
super();
this.url = url;
this.keyword = keyword;
}

public void run() {
this.logName = Thread.currentThread().getName();

int dataCount = 0, deleteCount = 0, deleteSuccCount = 0;
int start = 0;
int rows = 100;

// 不指定core,solr会采用默认配置collection1

HttpSolrServer server = new HttpSolrServer(url);

boolean isDelete = true;
while (isDelete) {
try {

SolrQuery query = new SolrQuery();

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();
}

}
}

View Code

 


 


作者:SVENNEE ​​​