前提是您已经能在Tomcat中部署Solr
1.PostTool.Java
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
public class PostTool {
public void postData(URL solrUrl, Reader data, Writer output) {
HttpURLConnection urlc = null;
try {
urlc = (HttpURLConnection) solrUrl.openConnection();
try {
urlc.setRequestMethod("POST");
} catch (Exception e) {
}
urlc.setDoOutput(true);
urlc.setDoInput(true);
urlc.setUseCaches(false);
urlc.setAllowUserInteraction(false);
urlc.setRequestProperty("Content-type", "text/xml; charset=utf-8");
OutputStream out = urlc.getOutputStream();
try {
Writer writer = new OutputStreamWriter(out, "utf-8");
pipe(data, writer);
writer.close();
} catch (IOException e) {
} finally {
if(out!=null) out.close();
}
InputStream in = urlc.getInputStream();
try {
Reader reader = new InputStreamReader(in);
pipe(reader, output);
reader.close();
} catch (IOException e) {
} finally {
if(in!=null) in.close();
}
} catch (IOException e) {
} finally {
if(urlc!=null) urlc.disconnect();
}
}
private static void pipe(Reader reader, Writer writer) throws IOException {
char[] buf = new char[1024];
int read = 0;
while((read = reader.read(buf) ) >= 0) {
writer.write(buf, 0, read);
}
writer.flush();
}
//
public Document postData(String solrUrl) {
Document document = null;
try {
URL url = new URL(solrUrl);
HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
urlc.setRequestProperty("Content-type", "text/xml; charset=utf-8");
urlc.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(urlc.getInputStream(), "utf-8"));
SAXReader reader = new SAXReader();
document = reader.read(in);
in.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
return document;
}
//用于增加
public void postData(String solrUrl, Document document) {
try {
URL url = new URL(solrUrl);
ByteArrayInputStream stream = new ByteArrayInputStream(document.asXML().getBytes("utf-8"));
final StringWriter sw = new StringWriter();
postData(url, new InputStreamReader(stream,"utf-8"), sw);
postData(url, new StringReader("<commit/>"), sw);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
2.SolrTest.Java
import java.io.StringReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
/**
* solr操作
* @author Rain
*/
public class SolrTest {
public static String serverURL = "http://localhost:8080";
/**
* 查询,结果返回xml文档
* url=http://localhost:8080/solr/select/?version=2.2&start=0&rows=10&indent=on&q=xm_s:测试
* @param keyWord
* @return Document
*/
public Document select(String keyWord) {
try {
keyWord = URLEncoder.encode(keyWord, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String solrUrl = serverURL + "/solr/select/?version=2.2&start=0&rows=10&indent=on&q=xm_s:" + keyWord;
return new PostTool().postData(solrUrl);
}
/**
* 增加
* url=http://localhost:8080/solr/update
* @param xm 姓名
* @param sfzhm 身份证
*/
public void addDoc(String xm, String sfzhm) {
String solrUrl = serverURL + "/solr/update";
Document document = DocumentHelper.createDocument();
Element root = document.addElement("add");
Element doc = root.addElement("doc");
Element field = null;
field = doc.addElement("field");
field.addAttribute("name", "id");
field.addText(String.valueOf(System.currentTimeMillis()));
field = doc.addElement("field");
field.addAttribute("name", "xm_s");
field.addText(xm);
field = doc.addElement("field");
field.addAttribute("name", "sfzhm_s");
field.addText(sfzhm);
new PostTool().postData(solrUrl, document);
}
/**
* 修改(通过id修改)
* @param id id
* @param xm 姓名
* @param sfzhm 身份证
*/
public void update(String id, String xm, String sfzhm) {
String solrUrl = serverURL + "/solr/update";
Document document = DocumentHelper.createDocument();
Element root = document.addElement("add");
Element doc = root.addElement("doc");
Element field = null;
field = doc.addElement("field");
field.addAttribute("name", "id");
field.addText(id);
field = doc.addElement("field");
field.addAttribute("name", "xm_s");
field.addText(xm);
field = doc.addElement("field");
field.addAttribute("name", "sfzhm_s");
field.addText(sfzhm);
new PostTool().postData(solrUrl, document);
}
/**
* 删除
* url=http://localhost:8080/solr/update
* @param id id
*/
public void delete(String id) {
String solrUrl = serverURL + "/solr/update";
try {
URL url = new URL(solrUrl);
final StringWriter sw = new StringWriter();
PostTool postTool = new PostTool();
postTool.postData(url, new StringReader("<delete><id>"+id+"</id></delete>"),sw);
postTool.postData(url, new StringReader("<commit/>"), sw);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
/**
* 当前日期字符
* @return String 日期字符
*/
public static String getCurrentDateTime(String type) {
SimpleDateFormat sdf = new SimpleDateFormat(type);
String dateString = sdf.format(new Date());
return dateString;
}
public static void main(String[] args) {
SolrTest solrTest = new SolrTest();
solrTest.addDoc("测试", "123456789");
solrTest.addDoc("某人", "888888888");
Document d = solrTest.select("测试");
System.out.println(d.asXML());
solrTest.update("1212547585639", "郁闷", "77777777777");
//Document d = solrTest.select("郁闷");
//System.out.println(d.asXML());
solrTest.delete("1212547585639");
//Document d = solrTest.select("郁闷");
//System.out.println(d.asXML());
}
}
分享到:
相关推荐
### Solr服务器的搭建与配置实例 #### 一、Solr简介 Solr是一个高性能、可伸缩的企业级搜索引擎平台,它可以作为一个独立的...随着对Solr的深入了解和实践,我们可以进一步优化和扩展其功能,满足更复杂的应用需求。
Solr 的基本安装配置主要包括 Solr 配置所需包、Solr 配置文件详解和 Solr 服务配置说明三个部分。 Solr 配置所需包 Solr 需要的配置包主要包括 JDK、Apache Tomcat 和 Apache ZooKeeper 等。 Solr 配置文件详解 ...
在本教程中,我们将探讨Solr的基本应用操作,特别关注代码部分。 首先,我们要了解Solr的工作原理。Solr利用Lucene库进行索引和搜索,通过HTTP协议提供服务,支持JSON、XML等多种数据交换格式。一个典型的Solr应用...
本项目示例是针对Solr 5.5.4版本的一个实践应用,旨在帮助用户了解并掌握Solr的基本操作,包括对索引的增加、删除、修改和查询。 1. **Solr安装与配置**:首先,你需要下载Solr 5.5.4版本,并解压到本地文件系统。...
以上就是配置 Solr 服务在 Tomcat 上运行并使用 SolrJ 进行数据交互的基本步骤。根据实际需求,你可能还需要配置 Solr 的高级特性,如复制集、云模式、分词器等。确保了解 Solr 的核心概念,如字段类型、查询语法和...
3. `example`:这是一个示例Solr实例,包含了一个预配置的核心,可以用来快速启动并了解Solr的基本操作。 4. `dist`:存放Solr的JAR文件,包括solr-core.jar、solr-solrj.jar等。 5. `contrib`:包含了一些可选的...
然后可以通过POST请求将数据导入Solr,Solr会自动进行分词、建立倒排索引等操作,从而实现快速的全文检索。 Lucene是Solr的核心搜索引擎库,它提供了基本的搜索功能,如倒排索引、TF-IDF评分等。而Solr则在其基础上...
总之,离线安装Solr在Ambari中是一项涉及多步操作的任务,需要对Ambari的架构和服务管理有深入理解,同时也需要对Solr的基本工作原理有所了解。通过遵循提供的资源和指南,可以有效地完成这个过程。
Solr项目源码及solr资源包是一个针对搜索引擎平台Apache Solr的学习与实践资源集合,主要结合了Spring Data Solr框架进行操作。这个项目旨在帮助开发者更好地理解和运用Solr进行数据索引和检索。让我们详细地探讨...
这个项目已经预配置好,可以直接在MyEclipse集成开发环境中运行,便于理解和实践Solr的基本操作。 首先,我们需要了解Solr的工作原理。Solr是基于Lucene库构建的,主要负责索引和查询大量文本数据。索引过程将原始...
在本例中,通过`@Value`注解从配置文件中读取Solr服务的基本URL,并通过该URL实例化一个`HttpSolrServer`对象,以便与Solr服务器建立连接。 ```java @Value("${ph.solr.baseurl}") private String baseUrl; ...
- **启动服务**:提供启动 Solr 服务的具体命令行操作。 - **验证安装**:通过访问 Solr 管理界面确认安装成功。 #### 五、Solr 管理界面使用 - **界面介绍**:介绍 Solr 管理界面的基本布局和各个模块的功能。 - *...
Solr,全称为Apache Solr,是企业级的开源全文搜索引擎,它提供了高效、可扩展的搜索和分析功能。...无论是初学者还是资深开发者,掌握Solr的基本操作和高级特性,都是提升企业数据检索能力的关键。
Java客户端是与Solr通信的一种常见方式,它允许开发者通过编写Java代码来执行索引操作、查询、更新和管理Solr实例。在“solr-example”这个压缩包中,可能包含了一个简单的Java示例项目,展示了如何使用SolrJ,这是...
jar包中的`solr-server.jar`包含了Solr服务器的基本功能。 3. **SolrJ**:SolrJ是Solr的Java客户端库,它提供了一组API,方便开发者在Java应用程序中与Solr服务器进行交互。`solr-solrj.jar`包含了这些API,用于...
2. **基本操作**: - **添加文档**: 使用`add()`方法将文档添加到索引,通常需要调用`commit()`方法提交更改以使其生效。 - **删除文档**: 可以通过ID或查询条件删除文档,使用`deleteById()`或`deleteByQuery()`...
- "Solr 控制脚本参考" 提供了对 Solr 的各种命令行操作的指导,有助于用户通过命令行工具管理 Solr 服务。 - "Solr 配置文件" 讲解了 Solr 的配置文件结构和配置选项,是进行定制化配置前需要了解的基础。 - "Solr ...