文章插圖

文章插圖
1.在虛擬機里安裝solr,可以通過官網下載solr的linux的安裝包解壓之后,添加/etc/sysconfig/iptables中的端口號8983(solr默認)2.Solr的安裝:第一步:解壓壓縮文件:[[email protected] Desktop]# tar -zvxf solr-7.3.1.tgz -C /opt/第二步:啟動solr[[email protected] Desktop]# /opt/solr-7.3.1/bin/solr start -force第三步:測試 在瀏覽器中輸入http://localhost:8983/solr如果出現AdminUI界面 正確,否則失敗第四步:創建Admin Core出現bug了:修復:[[email protected] 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;@[email protected](pattern="yyyy-MM-dd")private Date stime;<!-- 配置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="http://www.mnbkw.com/jxjc/189933/15000"/><property name="maxConnections" value="http://www.mnbkw.com/jxjc/189933/100"/></bean><!-- 操作solr的簡化的模版對象 --><bean id="solrTemplate" class="org.springframework.data.solr.core.SolrTemplate"><constructor-arg index="0" ref="solrClientFactory"/></bean>【solr使用教程 solr能做什么】
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);}}
- Java寫接口 java接口開發教程
- word排版技巧大全視頻教程 word排版技巧大全視頻
- Ajax上傳圖片 jq上傳圖片ajax提交
- oracle數據庫基礎教程課后答案 oracle數據庫教程課后答案
- java配置環境變量步驟視頻教程 java怎樣配置環境變量
- cpanel面板安裝教程 cpanel使用教程
- ajax使用教程 ajax基礎教程
- sql2000安裝教程在win7上的安裝方法 windows7安裝sql2000
- mongodb使用方法 mongodb權威指南
- 書名號和單書名號怎么用 單書名號怎么使用
