solrj实现基本的添加索引,查询
来源:互联网 发布:java 发布到docker 编辑:程序博客网 时间:2024/05/01 16:25
import java.io.IOException;import java.net.MalformedURLException;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.List;import java.util.Map;import org.apache.solr.client.solrj.SolrQuery;import org.apache.solr.client.solrj.SolrServerException;import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;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 org.junit.Test;public class SolrJDemo {/** * 获取CommonsHttpSolrServer连接 * @return */public CommonsHttpSolrServer getConnection() {try {String url = "http://127.0.0.1:8080/solr";CommonsHttpSolrServer server = new CommonsHttpSolrServer(url);server.setSoTimeout(3000); // socket read timeout server.setConnectionTimeout(1000);server.setDefaultMaxConnectionsPerHost(1000);server.setMaxTotalConnections(10);server.setFollowRedirects(false); // defaults to false server.setAllowCompression(true);server.setMaxRetries(1);return server;} catch (MalformedURLException e) {e.printStackTrace();} return null;}/** * 向solr中添加索引 */@Testpublic void addIndexToSolr(){ try {//创建一个http连接 CommonsHttpSolrServer server = getConnection(); //构造文档和域 SolrInputDocument doc1 = new SolrInputDocument(); SolrInputDocument doc2 = new SolrInputDocument(); //确认schema.xml中是否有id,name,price这几个域 //<field name="id" type="string" indexed="true" stored="true" required="true" /> //<field name="sku" type="text_en_splitting_tight" indexed="true" stored="true" omitNorms="true"/> //<field name="name" type="text_general" indexed="true" stored="true"/> //添加域 doc1.addField( "id", "id3", 1.0f ); doc1.addField( "name", "doc3", 1.0f ); doc1.addField( "price", 30 ); doc2.addField( "id", "id4", 2.0f ); doc2.addField( "name", "doc4", 2.0f ); doc2.addField( "price", 40 ); //批量添加文档 Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); docs.add( doc1 ); docs.add( doc2 ); server.add(docs); server.commit(); }catch (SolrServerException e) {e.printStackTrace(); }catch (IOException e) {e.printStackTrace(); }}/** * 添加中文信息 */@Testpublic void addChineseIndexToSolr(){ try {//创建一个http连接 CommonsHttpSolrServer server = getConnection(); //构造文档和域 SolrInputDocument doc1 = new SolrInputDocument(); SolrInputDocument doc2 = new SolrInputDocument(); //确认schema.xml中是否有id,name,price这几个域 //<field name="id" type="string" indexed="true" stored="true" required="true" /> //<field name="sku" type="text_en_splitting_tight" indexed="true" stored="true" omitNorms="true"/> //<field name="name" type="text_general" indexed="true" stored="true"/> //添加域 doc1.addField( "id", "id8"); doc1.addField("msg_title", "java编程技术xx"); doc1.addField( "msg_content","北京人民大会堂"); doc2.addField( "id", "id9"); doc2.addField( "msg_title","lucene in action"); doc2.addField( "msg_content", "泉州市行政服务中心"); //批量添加文档 Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>(); docs.add( doc1 ); docs.add( doc2 ); server.add(docs); server.commit(); }catch (SolrServerException e) {e.printStackTrace(); }catch (IOException e) {e.printStackTrace(); }}@Test/** * 查询+高亮 */public void readDataFormSolr(){ try { //创建一个http连接 CommonsHttpSolrServer server = getConnection(); SolrQuery query = new SolrQuery(); //请求所有文档 //1、SolrQuery类,此类有个方法setStart(10),当设置为10时,表示从第11记录取,默认取值为0,就是从第,1条开始 //2、setRows(10),表示取出的记录数,默认就是10条 query.setQuery( "msg_content:北京" ); //设置高亮 query.addHighlightField("msg_content"); query.setHighlight(true); query.setHighlightSimplePre("<span>"); query.setHighlightSimplePost("</span>"); //query.setStart(0); //query.addSortField( "price", SolrQuery.ORDER.asc ); QueryResponse rsp = server.query( query ); //获取结果 SolrDocumentList docs = rsp.getResults(); System.out.println(docs);// //遍历,获取结果 Iterator iter = docs.iterator(); //获取高亮结果 Map<String, Map<String, List<String>>> hightlight = rsp.getHighlighting(); while(iter.hasNext()){ //获取文档 SolrDocument document = (SolrDocument)iter.next(); //获取每个域值 String id = (String)document.get("id"); String msg_title = (String)document.get("msg_title"); String hightlightName = ""; if(hightlight!=null){ //获取高亮结果 hightlightName = hightlight.get(id).get("msg_content").toString(); } String msg_content = (String)document.get("msg_content"); System.out.println("msg_title="+msg_title +" msg_content="+msg_content +" hightlightName="+hightlightName); }} catch (SolrServerException e) {e.printStackTrace();} }/** * 查询 */@Testpublic void readDataFormSolr1(){ try { //创建一个http连接 CommonsHttpSolrServer server = getConnection(); SolrQuery query = new SolrQuery(); //请求所有文档 //1、SolrQuery类,此类有个方法setStart(10),当设置为10时,表示从第11记录取,默认取值为0,就是从第,1条开始 //2、setRows(10),表示取出的记录数,默认就是10条 query.setQuery( "msg_content:北京" ); QueryResponse rsp = server.query( query ); //获取结果 SolrDocumentList docs = rsp.getResults(); System.out.println(docs);// //遍历,获取结果 Iterator iter = docs.iterator(); while(iter.hasNext()){ //获取文档 SolrDocument document = (SolrDocument)iter.next(); //获取每个域值 String id = (String)document.get("id"); String msg_title = (String)document.get("msg_title"); String msg_content = (String)document.get("msg_content"); System.out.println("msg_title="+msg_title +" msg_content="+msg_content); }} catch (SolrServerException e) {e.printStackTrace();} }}
0 0
- solrj实现基本的添加索引,查询
- solrj的使用,环境准备,工程搭建,索引创建,添加\修改索引,删除索引,查询
- solrj实现增量索引
- solrj实现solr的group查询:
- solrj 实现 group查询
- solr 的客户端调用solrj 建索引+分页查询
- solr 的客户端调用solrj 建索引+分页查询
- solr 的客户端调用solrj 建索引+分页查询
- SolrJ的基本操作
- SolrJ的基本操作
- Solr客户端 SolrJ单机 添加查询操作
- solrJ的简单查询操作
- solrJ一些基本的使用
- SOLRJ查询
- solrJ对索引的删除操作
- solrj 更新部分索引域的值
- 【原创】Java+solrJ实现对solr索引的增删改查
- 3.跟我学solr---使用solrj添加索引
- 显示Spinner中已经选中的项
- v4l2_device.c浅析
- ViewPager仿淘宝广告栏
- Error :asm/arch/davinci_vdce.h : no such file or directory
- Android中Bitmap和Drawable
- solrj实现基本的添加索引,查询
- svn 常见报错
- v4l2_common.c浅析
- 网关;gateways
- 写网站
- handler<1>
- hadoop好文
- SQL SERVER 2008 事务日志截断
- v4l2_dev.c浅析