Solr
来源:互联网 发布:日本青少年犯罪 知乎 编辑:程序博客网 时间:2024/06/07 05:10
package test;
import java.io.IOException;
import java.util.List;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import com.alibaba.fastjson.JSONObject;
public class SolrTest {
public static void main(String[] args) throws Exception {
SolrTest solr = new SolrTest();
solr.createSolrServer();
solr.addDoc();
/* solr.deleteDocumentById();*/
/*solr.querySolr();*/
}
// 指定solr服务器的地址
private final static String SOLR_URL = "http://172.16.17.11:10180/solr/";
private final static String COLLECTION = "data_interface_test";
/**
* 创建SolrServer对象
* 该对象有两个可以使用,都是线程安全的
* 1、CommonsHttpSolrServer:启动web服务器使用的,通过http请求的
* 2、EmbeddedSolrServer:内嵌式的,导入solr的jar包就可以使用了
* 3、solr 4.0版本之后好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrClient
*
* @return
*/
@SuppressWarnings("deprecation")
public HttpSolrClient createSolrServer() {
HttpSolrClient solr = null;
solr = new HttpSolrClient(SOLR_URL);
return solr;
}
/**
* 往索引库添加文档
*
* @throws IOException
* @throws SolrServerException
*/
public void addDoc() throws SolrServerException, IOException {
// 构造一篇文档
SolrInputDocument document = new SolrInputDocument();
// 往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义
document.addField("id", "8");
document.addField("name", "周新星");
document.addField("description", "一个灰常牛逼的军事家");
// 获得一个solr服务端的请求,去提交 ,选择具体的某一个solr core
@SuppressWarnings("deprecation")
HttpSolrClient solr = new HttpSolrClient(SOLR_URL + COLLECTION);
solr.add(document);
solr.commit();
solr.close();
}
/**
* 根据id从索引库删除文档
*/
public void deleteDocumentById() throws Exception {
// 选择具体的某一个solr core
@SuppressWarnings("deprecation")
HttpSolrClient server = new HttpSolrClient(SOLR_URL + COLLECTION);
// 删除文档
server.deleteById("8");
// 删除所有的索引
// solr.deleteByQuery("*:*");
// 提交修改
server.commit();
server.close();
}
/**
* 查询
*
* @throws Exception
*/
public void querySolr() throws Exception {
@SuppressWarnings({ "deprecation", "resource" })
HttpSolrClient solrServer = new HttpSolrClient(SOLR_URL + COLLECTION);
SolrQuery query = new SolrQuery();
// 下面设置solr查询参数
query.set("q", "*:*");// 参数q 查询所有
// query.set("q", "周星驰");// 相关查询,比如某条数据某个字段含有周、星、驰三个字 将会查询出来 ,这个作用适用于联想查询
// 参数fq, 给query增加过滤查询条件
query.addFilterQuery("id:489094a7-10b6-4027-9f3c-15bc46cb40cb");// id为0-4
// 给query增加布尔过滤条件
// query.addFilterQuery("description:演员"); //description字段中含有“演员”两字的数据
// 参数df,给query设置默认搜索域
// query.set("df", "name");
// 参数sort,设置返回结果的排序规则
// query.setSort("id", SolrQuery.ORDER.desc);
// 设置分页参数
query.setStart(0);
query.setRows(10);// 每一页多少值
// 参数hl,设置高亮
query.setHighlight(true);
// 设置高亮的字段
query.addHighlightField("name");
// 设置高亮的样式
query.setHighlightSimplePre("<font color='red'>");
query.setHighlightSimplePost("</font>");
// 获取查询结果
QueryResponse response = solrServer.query(query);
// 两种结果获取:得到文档集合或者实体对象
// 查询得到文档的集合
SolrDocumentList solrDocumentList = response.getResults();
System.out.println("通过文档集合获取查询的结果");
System.out.println("查询结果的总数量:" + solrDocumentList.getNumFound());
// 遍历列表
for (SolrDocument doc : solrDocumentList) {
System.out.println("id:" + doc.get("id") + " name:" + doc.get("level_s") + " description:"
+ doc.get("loginTime_l"));
}
// 得到实体对象
List<JSONObject> tmpLists = response.getBeans(JSONObject.class);
if (tmpLists != null && tmpLists.size() > 0) {
System.out.println("通过文档集合获取查询的结果");
for (JSONObject per : tmpLists) {
System.out.println("id:" + per.get("id") + " name:" + per.get("level_s") + " description:" + per.get("loginTime_l"));
}
}
}
}
import java.io.IOException;
import java.util.List;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import com.alibaba.fastjson.JSONObject;
public class SolrTest {
public static void main(String[] args) throws Exception {
SolrTest solr = new SolrTest();
solr.createSolrServer();
solr.addDoc();
/* solr.deleteDocumentById();*/
/*solr.querySolr();*/
}
// 指定solr服务器的地址
private final static String SOLR_URL = "http://172.16.17.11:10180/solr/";
private final static String COLLECTION = "data_interface_test";
/**
* 创建SolrServer对象
* 该对象有两个可以使用,都是线程安全的
* 1、CommonsHttpSolrServer:启动web服务器使用的,通过http请求的
* 2、EmbeddedSolrServer:内嵌式的,导入solr的jar包就可以使用了
* 3、solr 4.0版本之后好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrClient
*
* @return
*/
@SuppressWarnings("deprecation")
public HttpSolrClient createSolrServer() {
HttpSolrClient solr = null;
solr = new HttpSolrClient(SOLR_URL);
return solr;
}
/**
* 往索引库添加文档
*
* @throws IOException
* @throws SolrServerException
*/
public void addDoc() throws SolrServerException, IOException {
// 构造一篇文档
SolrInputDocument document = new SolrInputDocument();
// 往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义
document.addField("id", "8");
document.addField("name", "周新星");
document.addField("description", "一个灰常牛逼的军事家");
// 获得一个solr服务端的请求,去提交 ,选择具体的某一个solr core
@SuppressWarnings("deprecation")
HttpSolrClient solr = new HttpSolrClient(SOLR_URL + COLLECTION);
solr.add(document);
solr.commit();
solr.close();
}
/**
* 根据id从索引库删除文档
*/
public void deleteDocumentById() throws Exception {
// 选择具体的某一个solr core
@SuppressWarnings("deprecation")
HttpSolrClient server = new HttpSolrClient(SOLR_URL + COLLECTION);
// 删除文档
server.deleteById("8");
// 删除所有的索引
// solr.deleteByQuery("*:*");
// 提交修改
server.commit();
server.close();
}
/**
* 查询
*
* @throws Exception
*/
public void querySolr() throws Exception {
@SuppressWarnings({ "deprecation", "resource" })
HttpSolrClient solrServer = new HttpSolrClient(SOLR_URL + COLLECTION);
SolrQuery query = new SolrQuery();
// 下面设置solr查询参数
query.set("q", "*:*");// 参数q 查询所有
// query.set("q", "周星驰");// 相关查询,比如某条数据某个字段含有周、星、驰三个字 将会查询出来 ,这个作用适用于联想查询
// 参数fq, 给query增加过滤查询条件
query.addFilterQuery("id:489094a7-10b6-4027-9f3c-15bc46cb40cb");// id为0-4
// 给query增加布尔过滤条件
// query.addFilterQuery("description:演员"); //description字段中含有“演员”两字的数据
// 参数df,给query设置默认搜索域
// query.set("df", "name");
// 参数sort,设置返回结果的排序规则
// query.setSort("id", SolrQuery.ORDER.desc);
// 设置分页参数
query.setStart(0);
query.setRows(10);// 每一页多少值
// 参数hl,设置高亮
query.setHighlight(true);
// 设置高亮的字段
query.addHighlightField("name");
// 设置高亮的样式
query.setHighlightSimplePre("<font color='red'>");
query.setHighlightSimplePost("</font>");
// 获取查询结果
QueryResponse response = solrServer.query(query);
// 两种结果获取:得到文档集合或者实体对象
// 查询得到文档的集合
SolrDocumentList solrDocumentList = response.getResults();
System.out.println("通过文档集合获取查询的结果");
System.out.println("查询结果的总数量:" + solrDocumentList.getNumFound());
// 遍历列表
for (SolrDocument doc : solrDocumentList) {
System.out.println("id:" + doc.get("id") + " name:" + doc.get("level_s") + " description:"
+ doc.get("loginTime_l"));
}
// 得到实体对象
List<JSONObject> tmpLists = response.getBeans(JSONObject.class);
if (tmpLists != null && tmpLists.size() > 0) {
System.out.println("通过文档集合获取查询的结果");
for (JSONObject per : tmpLists) {
System.out.println("id:" + per.get("id") + " name:" + per.get("level_s") + " description:" + per.get("loginTime_l"));
}
}
}
}
阅读全文
0 0
- Solr
- solr
- solr
- solr
- solr
- solr
- Solr
- solr
- solr
- solr
- solr
- Solr
- solr
- Solr
- solr
- solr
- Solr
- solr
- 对java的一个总体认识!
- java基础知识3--如何获取资源文件(Java中获取资源文件的url)
- HttpURLConnection上传文件
- springmvc 传递和接收数组参数
- 当前时间2017.12.13
- Solr
- labview与USB通信
- javascript函数定义三种方式详解
- 阿里云数据库全新功能Redis读写分离,全维度技术解析
- Memcache内核机制(译文+理解)
- 支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url
- Unity3D
- Android应用的内存优化总结
- 配置caffe时遇到的一些问题解决方法链接汇总