Solr6.3 在Java中的简单使用
来源:互联网 发布:都叫兽数据恢复激活码 编辑:程序博客网 时间:2024/05/29 15:27
import com.backzero.solr.service.SolrService;import com.backzero.solr.util.SolrUtils;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.client.solrj.response.UpdateResponse;import org.apache.solr.common.SolrDocumentList;import org.apache.solr.common.SolrInputDocument;import org.springframework.stereotype.Service;import org.springframework.transaction.annotation.Transactional;import java.io.IOException;import java.util.List;import java.util.Map;/** * Created by BackZero on 2016/11/29 0029. */@Service@Transactionalpublic class SolerServiceImpl implements SolrService { /** * 简单查询 * @param mQueryStr * @return query result */ public SolrDocumentList query(String mQueryStr) { try { HttpSolrClient httpSolrClient = SolrUtils.connect(); SolrQuery query = new SolrQuery(); //设定查询字段 query.setQuery(mQueryStr); //指定返回结果字段 query.set("fl","id,name"); //覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定。必须大写 query.set("q.op","AND"); //设定返回记录数,默认为10条 query.setRows(10); QueryResponse response = httpSolrClient.query(query); SolrDocumentList list = response.getResults(); return list; } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } /** * 分页查询 * @param queryStr * @param start * @param rows * @return SolrDocumentList */ public SolrDocumentList queryPage(String queryStr,Integer start,Integer rows ){ try { HttpSolrClient httpSolrClient = SolrUtils.connect(); SolrQuery query = new SolrQuery(); //设定查询字段 query.setQuery(queryStr); //指定返回结果字段 query.setIncludeScore(true); // query.set("fl","id,name"); //覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定。必须大写 query.set("q.op","AND"); //分页开始页数 query.setStart(start); //设定返回记录数,默认为10条 query.setRows(rows); //设定对查询结果是否高亮 query.setHighlight(true); //设定高亮字段前置标签 query.setHighlightSimplePre("<span style=\"color:red\">"); //设定高亮字段后置标签 query.setHighlightSimplePost("</span>"); //设定高亮字段 query.addHighlightField("name"); //设定拼写检查 query.setRequestHandler("/spell"); QueryResponse response = httpSolrClient.query(query); //获取bean // List<Object> bean = response.getBeans(Object.class); SolrDocumentList list = response.getResults(); return list; } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } /** * 添加一个实体 * * @param object */ public void addBean(Object object) { try { HttpSolrClient httpSolrClient = SolrUtils.connect(); httpSolrClient.addBean(object); httpSolrClient.commit(); } catch (IOException e) { e.printStackTrace(); } catch (SolrServerException e) { e.printStackTrace(); } } /** * 添加简单索引 * * @param map */ public void addDoc(Map<String, Object> map) { try { HttpSolrClient httpSolrClient = SolrUtils.connect(); SolrInputDocument document = new SolrInputDocument(); document = SolrUtils.addFileds(map,document); UpdateResponse response = httpSolrClient.add(document); httpSolrClient.commit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 删除索引 * * @param id */ public void deleteById(String id) { try { HttpSolrClient httpSolrClient = SolrUtils.connect(); httpSolrClient.deleteById(id); httpSolrClient.commit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}import java.lang.reflect.Field;import org.apache.solr.client.solrj.impl.HttpSolrClient;import org.apache.solr.client.solrj.impl.XMLResponseParser;import org.apache.solr.common.SolrDocument;import org.apache.solr.common.SolrException;import org.apache.solr.common.SolrInputDocument;import org.slf4j.LoggerFactory;import org.apache.commons.beanutils.BeanUtils;import java.lang.reflect.InvocationTargetException;import java.util.Iterator;import java.util.Map;/** * solr 工具类 * Created by BackZero on 2016/11/29 0029. */public class SolrUtils { /** * solr 服务器访问地址 */ private static String url = "http://localhost:9090/solr/new_core"; private static Integer connectionTimeout = 100; // socket read timeout private static Integer defaltMaxConnectionsPerHost = 100 ; private static Integer maxTotalConnections = 100 ; private static Boolean followRedirects = false ; // defaults to false private static Boolean allowCompression = true ; // private static Integer maxRetries = 1 ; //defaults to 0. > 1 not recommended. private static org.slf4j.Logger logger = LoggerFactory.getLogger(SolrUtils.class); /** * @param map key is filed name value,map value is filed value * @return SolrInputDocument */ public static SolrInputDocument addFileds(Map<String,Object> map, SolrInputDocument document){ if(document == null){ document = new SolrInputDocument(); } Iterator iterator = map.keySet().iterator(); while (iterator.hasNext()){ String key = iterator.next().toString(); document.setField(key,map.get(key)); } return document; } /** *建立solr链接,获取 HttpSolrClient * @return HttpSolrClient */ public static HttpSolrClient connect(){ HttpSolrClient httpSolrClient = null; try{ httpSolrClient = new HttpSolrClient.Builder(url).build(); httpSolrClient.setParser(new XMLResponseParser());//设定xml文档解析器 httpSolrClient.setConnectionTimeout(connectionTimeout);//socket read timeout httpSolrClient.setAllowCompression(allowCompression); httpSolrClient.setMaxTotalConnections(maxTotalConnections); httpSolrClient.setDefaultMaxConnectionsPerHost(defaltMaxConnectionsPerHost); httpSolrClient.setFollowRedirects(followRedirects); }catch (SolrException e){ System.out.println("请检查tomcat服务器或端口是否开启!"); logger.error(e.getMessage()); e.printStackTrace(); } return httpSolrClient; } /** * 将SolrDocument 转换为Bean * @param record * @param clazz * @return bean */ public static Object toBean(SolrDocument record, Class clazz){ Object obj = null; try { obj = clazz.newInstance(); } catch (InstantiationException e1) { e1.printStackTrace(); } catch (IllegalAccessException e1) { e1.printStackTrace(); } Field[] fields = clazz.getDeclaredFields(); for(Field field:fields){ Object value = record.get(field.getName()); try { BeanUtils.setProperty(obj, field.getName(), value); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } return obj; }}
}
2 0
- Solr6.3 在Java中的简单使用
- protobuf在Java中的简单使用
- Solr6.3 Getting Started 使用Solr6.3的前期准备
- 在Solr6.3中创建core
- solr6.3与MySQL结合使用
- java中比较器在结构体中的简单使用
- Java Scanner类在OJ中的简单使用
- 策略模式在java中的简单使用的代码
- (六)Solr6.4.1 在java中进行条件查询
- solr6.5的使用
- solr6简单搭建 solr7可以
- Solr6.3配置和Ik-analyzer6.3使用
- Solr6.3配置和Ik-analyzer6.3使用
- solr6.6.0在tomcat启动
- solr6.3配置
- solr6.3安装部署
- AJAX在PHP中的简单使用
- AJAX在PHP中的简单使用
- C#实现文件读写
- Kaggle | Allstate Claims Severity比赛总结
- 436_画出圆周运动
- 437_完整彩色星星进度条
- args4j的使用
- Solr6.3 在Java中的简单使用
- Neofetch带发行版 Logo 图像的系统信息显示工具发布啦!
- 【工具】memcached基本控制台操作
- 1086. Tree Traversals Again (25)
- 不止一次遇到的panic错误及this.TplName和this.Redirect()的区别
- 438_用path画出粗半圆环
- c#日期和事件控件的使用(日期的修改)
- 【git】SSH keys 生成,管理多个 SSH keys ,代码第一次提交到远程仓库
- 检查静态库是否支持bitcode