1.在vm虚拟机中安裝solr,根据官方网站下载solr的linux安装文件并缓解压力。在/etc/sysconfig/iptables中加上端口8983(Solr初始值)。2.Solr安装:第一步:缓解压力压缩包:[root @ localhost桌面上]# tar-zvxf Solr-7 . 3 . 1 . tgz-c/opt/第二步:运行Solr [root @ localhost桌面上] #/opt/Solr-7.3.1/bin/Solr运行-强制性第三步:在网页中检测键入http://localhost:8983/solr。假如AdminUI页面恰当,不然第四步:建立Admin Core存有bug:修补:【root @ localhost desktop】# CP-RF/opt/Solr-7 . 3 . 1/server/Solr/config sets/_ default/conf//opt/Solr-7 . 3 . 1/server/Solr/在创好的new_core中修补new_core/ mobile环境变量后,new_core被取得成功再次建立。3.运行后,Windows电脑浏览器根据IP: 8983浏览solr网页页面。留意:在solr中储存数据信息时,该dao层务必有一个String种类的id字段名,与此同时在solr下加上字段名注解,那样储存在solr中的id便是数据库查询中的id值。

@Fieldprivate String id;@Fieldprivate String sid;@Fieldprivate String sname;@Fieldprivate Double sprice;@Field@DateTimeFormat(pattern="yyyy-MM-dd")private Date stime;solr教程从入门到精通-solr和elasticsearch的区别-第1张图片4.solr必须在spring中引入2个dao层,一个是联接vm虚拟机的类,另一个是solr的模板类。

solr教程从入门到精通-solr和elasticsearch的区别-第2张图片闪光点:有一个solr的java工具:封裝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("");highlightOptions.setSimplePostfix("");query.setHighlightOptions(highlightOptions);// 实行高亮度查看HighlightPage highlightPage = solrTemplate.queryForHighlightPage(query, clazz);// 获得总页码Integer pageCount = highlightPage.getTotalPages();// 获得当页数据信息List highlighted = highlightPage.getHighlighted();// 获得高亮度目标for (HighlightEntry cc : highlighted) {Object entity = cc.getEntity();// 获得突出显示的結果List 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);}}

评论(0条)

刀客源码 游客评论