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

来源:国外服务器 在您之前已被浏览:1 次
导读:目前正在解读《solr教程从入门到精通(solr和elasticsearch的区别)》的相关信息,《solr教程从入门到精通(solr和elasticsearch的区别)》是由用户自行发布的知识型内容!下面请观看由(国外主机 - www.2bp.net)用户发布《solr教程从入门到精通(solr和elasticsearch的区别)》的详细说明。
笨笨网美国主机,w ww.2 b p .n e t

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;solr教程从入门到精通(solr和elasticsearch的区别)

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和elasticsearch的区别)

高亮显示:
这里有一个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);}}
笨笨网美国主机,w ww.2 b p .n e t
提醒:《solr教程从入门到精通(solr和elasticsearch的区别)》最后刷新时间 2025-03-21 11:17:36,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《solr教程从入门到精通(solr和elasticsearch的区别)》该内容的真实性请自行鉴别。