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

发布日期:2024-05-15 16:42:25     手机:https://m.xinb2b.cn/shenghuo/news6382.html    违规举报
核心提示:1.在虚拟机里安装solr,可以通过官网下载solr的linux的安装包解压之后,添加/etc/sysconfig/iptables中的端口号8983(solr默认)2.Solr的安装:第一步:解压压缩文件:[root@localhost

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";public void initData(SolrTemplate solrTemplate,List entities) {solrTemplate.setSolrCore(coreName);solrTemplate.saveBeans(entities);solrTemplate.commit(coreName);}public void insertBean(SolrTemplate solrTemplate,Object obj) {solrTemplate.setSolrCore(coreName);solrTemplate.saveBean(obj);solrTemplate.commit(coreName);}public void deleteBean(SolrTemplate solrTemplate,String id) {solrTemplate.setSolrCore(coreName);solrTemplate.deleteById(coreName,id);solrTemplate.commit(coreName);}public void deleteBeans(SolrTemplate solrTemplate,Collection ids) {solrTemplate.setSolrCore(coreName);solrTemplate.deleteById(coreName,ids);solrTemplate.commit(coreName);}public void updateBeans(SolrTemplate solrTemplate,String id,Object obj) {solrTemplate.setSolrCore(coreName);solrTemplate.deleteById(coreName,id);solrTemplate.saveBean(obj);solrTemplate.commit(coreName);}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);}}
 
 
本文地址:https://www.xinb2b.cn/shenghuo/news6382.html,转载请注明出处。

推荐图文
推荐生活健康
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  违规举报  |  蜀ICP备18010318号-4  |  百度地图  | 
Processed in 0.065 second(s), 91 queries, Memory 0.47 M