solr教程从入门到精通_solr和elasticsearch的区别

solr教程从入门到精通_solr和elasticsearch的区别,第1张

solr教程从入门精通_solr和elasticsearch的区别 1.在虚拟机里安装solr,可以通过官网下载solr的linux的安装包解压之后,添加/etc/sysconfig/iptables中的端口号8983(solr默认)2.Solr的安装:第一步:解压压缩文件:[root@localhost Desktop]# tar -zvxf solr-7.3.1.tgz -C /opt/第二步:启动solr[root@localhost Desktop]# /opt/solr-7.3.1/bin/solr start -force第三步:测试 在浏览器中输入http://localhost:8983/solr如果出现AdminUI界面 正确,否则失败第四步:创建Admin Core出现bug了:修复:[root@localhost Desktop]# cp -rf/opt/solr-7.3.1/server/solr/configsets/_default/conf/ /opt/solr-7.3.1/server/solr/new_core/移动配置文件到新建的new_core中修复完成之后,重新创建new_core 则成功3.启动之后windows浏览器通过ip:8983访问solr页面注意:在往solr中存数据的时候那个实体类必须有一个String类型的id字段,同时加上solr下的field注解,这样在存入solr中的id就是数据库里的id值 @Fieldprivate String id;@Fieldprivate String sid;@Fieldprivate String sname;@Fieldprivate Double sprice;@Field@DateTimeFormat(pattern="yyyy-MM-dd")private Date stime;4.solr在spring中需要注入两个实体类,一个是往虚拟机连接的类,一个是solr的模板类<!-- 配置solr工厂 获取Solr的客户端对象 --> <bean id="solrClientFactory" class="org.springframework.data.solr.server.support.HttpSolrClientFactoryBean"> <property name="url" value="http://192.168.133.131:8983/solr"/> <property name="timeout" value="15000"/> <property name="maxConnections" value="100"/> </bean> <!-- *** 作solr的简化的模版对象 --> <bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate"> <constructor-arg index="0" ref="solrClientFactory"/> </bean>高亮显示:这里有一个solr的工具类:封装了solr的ACDI *** 作public class SolrUtil {//单例模式的懒汉式//1.私有化的静态类属性private static SolrUtil solrUtil;//2.私有化的构造函数private SolrUtil() {}//3.对外提供公共的访问方法public static SolrUtil getSolrUtil(){if(solrUtil==null){return new SolrUtil();}return solrUtil;}private static String coreName = "new_core";/** * 添加集合数据 * * @param entities */public void initData(SolrTemplate solrTemplate,List entities) {solrTemplate.setSolrCore(coreName);solrTemplate.saveBeans(entities);solrTemplate.commit(coreName);}/** * 往solr里添加数据 * @param solrTemplate solr的模板对象 * @param obj 添加的那条对象 */public void insertBean(SolrTemplate solrTemplate,Object obj) {solrTemplate.setSolrCore(coreName);solrTemplate.saveBean(obj);solrTemplate.commit(coreName);}/** * 根据Id从solr中删除一条数据 * @param solrTemplate * @param id 要删除的那条Id */public void deleteBean(SolrTemplate solrTemplate,String id) {solrTemplate.setSolrCore(coreName);solrTemplate.deleteById(coreName,id);solrTemplate.commit(coreName);}/** * 从solr中根据Id批量删除数据 * @param solrTemplate * @param ids */public void deleteBeans(SolrTemplate solrTemplate,Collection ids) {solrTemplate.setSolrCore(coreName);solrTemplate.deleteById(coreName,ids);solrTemplate.commit(coreName);}/** * 从solr中修改数据,首先根据Id删除这条数据,在添加修改后的这条数据 * @param solrTemplate * @param id * @param obj */public void updateBeans(SolrTemplate solrTemplate,String id,Object obj) {solrTemplate.setSolrCore(coreName);solrTemplate.deleteById(coreName,id);solrTemplate.saveBean(obj);solrTemplate.commit(coreName);}/** * 查询 * 从solr里查询全部数据 * @param model 用来装载数据发向前台 * @param solrTemplate solr模板对象,用来查询处理solr数据 * @param cpage 当前页 * @param pageSize 分页单位 * @param mohu 要高亮查询的字段 * @param clazz 往solr里用来查询的对象的class对象 ,反射用 * @param fieldName 查询高亮显示的字段 * @param listdName 向前台发送集合的名称 * @throws Exception */public void selectObjects(Model model, SolrTemplate solrTemplate, Integer cpage,Integer pageSize, String mohu, Class clazz, String fieldName,String listName) throws Exception {// 声明返回值变量List entities = new ArrayList<>(); // 计算开始记录数Integer startIndex = (cpage - 1) * pageSize;// 设置 *** 作coresolrTemplate.setSolrCore(coreName);// 高亮查询条件HighlightQuery query = new SimpleHighlightQuery();// 开始记录数query.setOffset(startIndex);// 显示条数query.setRows(pageSize);// 设置条件Criteria criteria = new Criteria(fieldName);// 判断查询条件是否为空if(mohu!="" && mohu!=null){if(mohu.contains(" ")){String[] split = mohu.split(" ");criteria.contains(split);}else if(mohu.contains(",")){String[] split = mohu.split(",");criteria.contains(split);}else{criteria.contains(mohu);}}// 条件条件处理query.addCriteria(criteria);// 设置高亮的参数处理对象HighlightOptions highlightOptions = new HighlightOptions();highlightOptions.addField(fieldName);highlightOptions.setSimplePrefix("<font color='red'>");highlightOptions.setSimplePostfix("</font>");query.setHighlightOptions(highlightOptions);// 执行高亮查询HighlightPage highlightPage = solrTemplate.queryForHighlightPage(query, clazz);// 获取总页数Integer pageCount = highlightPage.getTotalPages();// 获取当前页数据List<HighlightEntry> highlighted = highlightPage.getHighlighted();// 获取高亮对象for (HighlightEntry cc : highlighted) {Object entity = cc.getEntity();// 获取高亮显示的结果List<Highlight> highlights = cc.getHighlights();// 设置高亮显示的值if (highlights != null && highlights.size() > 0 && highlights.get(0) != null&& highlights.get(0).getSnipplets() != null && highlights.get(0).getSnipplets().size() > 0) {// 获取字段名称Field field = clazz.getDeclaredField(fieldName);// 设置高亮处理field.setAccessible(true);field.set(entity, highlights.get(0).getSnipplets().get(0));}// 添加到集合中entities.add(entity);}// 存储到model域中model.addAttribute("cpage", cpage); model.addAttribute("pageCount", pageCount);model.addAttribute("mohu", mohu);model.addAttribute(listName, entities);}}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/649987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-17
下一篇 2022-04-17

发表评论

登录后才能评论

评论列表(0条)

保存