Solr6.3 在Java中的簡單使用
import com.backzero.solr.service.SolrService; import com.backzero.solr.util.SolrUtils; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.client.solrj.response.UpdateResponse; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrInputDocument; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.List; import java.util.Map; /** * Created by BackZero on 2016/11/29 0029. */ @Service @Transactional public class SolerServiceImpl implements SolrService { /** * 簡單查詢 * @param mQueryStr * @return query result */ public SolrDocumentList query(String mQueryStr) { try { HttpSolrClient httpSolrClient = SolrUtils.connect(); SolrQuery query = new SolrQuery(); //設定查詢欄位 query.setQuery(mQueryStr); //指定返回結果欄位 query.set("fl","id,name"); //覆蓋schema.xml的defaultOperator(有空格時用"AND"還是用"OR"操作邏輯),一般預設指定。必須大寫 query.set("q.op","AND"); //設定返回記錄數,預設為10條 query.setRows(10); QueryResponse response = httpSolrClient.query(query); SolrDocumentList list = response.getResults(); return list; } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } /** * 分頁查詢 * @param queryStr * @param start * @param rows * @return SolrDocumentList */ public SolrDocumentList queryPage(String queryStr,Integer start,Integer rows ){ try { HttpSolrClient httpSolrClient = SolrUtils.connect(); SolrQuery query = new SolrQuery(); //設定查詢欄位 query.setQuery(queryStr); //指定返回結果欄位 query.setIncludeScore(true); // query.set("fl","id,name"); //覆蓋schema.xml的defaultOperator(有空格時用"AND"還是用"OR"操作邏輯),一般預設指定。必須大寫 query.set("q.op","AND"); //分頁開始頁數 query.setStart(start); //設定返回記錄數,預設為10條 query.setRows(rows); //設定對查詢結果是否高亮 query.setHighlight(true); //設定高亮欄位前置標籤 query.setHighlightSimplePre("<span style=\"color:red\">"); //設定高亮欄位後置標籤 query.setHighlightSimplePost("</span>"); //設定高亮欄位 query.addHighlightField("name"); //設定拼寫檢查 query.setRequestHandler("/spell"); QueryResponse response = httpSolrClient.query(query); //獲取bean // List<Object> bean = response.getBeans(Object.class); SolrDocumentList list = response.getResults(); return list; } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } /** * 新增一個實體 * * @param object */ public void addBean(Object object) { try { HttpSolrClient httpSolrClient = SolrUtils.connect(); httpSolrClient.addBean(object); httpSolrClient.commit(); } catch (IOException e) { e.printStackTrace(); } catch (SolrServerException e) { e.printStackTrace(); } } /** * 新增簡單索引 * * @param map */ public void addDoc(Map<String, Object> map) { try { HttpSolrClient httpSolrClient = SolrUtils.connect(); SolrInputDocument document = new SolrInputDocument(); document = SolrUtils.addFileds(map,document); UpdateResponse response = httpSolrClient.add(document); httpSolrClient.commit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 刪除索引 * * @param id */ public void deleteById(String id) { try { HttpSolrClient httpSolrClient = SolrUtils.connect(); httpSolrClient.deleteById(id); httpSolrClient.commit(); } catch (SolrServerException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
import java.lang.reflect.Field; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.impl.XMLResponseParser; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrException; import org.apache.solr.common.SolrInputDocument; import org.slf4j.LoggerFactory; import org.apache.commons.beanutils.BeanUtils; import java.lang.reflect.InvocationTargetException; import java.util.Iterator; import java.util.Map; /** * solr 工具類 * Created by BackZero on 2016/11/29 0029. */ public class SolrUtils { /** * solr 伺服器訪問地址 */ private static String url = "http://localhost:9090/solr/new_core"; private static Integer connectionTimeout = 100; // socket read timeout private static Integer defaltMaxConnectionsPerHost = 100 ; private static Integer maxTotalConnections = 100 ; private static Boolean followRedirects = false ; // defaults to false private static Boolean allowCompression = true ; // private static Integer maxRetries = 1 ; //defaults to 0. > 1 not recommended. private static org.slf4j.Logger logger = LoggerFactory.getLogger(SolrUtils.class); /** * @param map key is filed name value,map value is filed value * @return SolrInputDocument */ public static SolrInputDocument addFileds(Map<String,Object> map, SolrInputDocument document){ if(document == null){ document = new SolrInputDocument(); } Iterator iterator = map.keySet().iterator(); while (iterator.hasNext()){ String key = iterator.next().toString(); document.setField(key,map.get(key)); } return document; } /** *建立solr連結,獲取 HttpSolrClient * @return HttpSolrClient */ public static HttpSolrClient connect(){ HttpSolrClient httpSolrClient = null; try{ httpSolrClient = new HttpSolrClient.Builder(url).build(); httpSolrClient.setParser(new XMLResponseParser());//設定xml文件解析器 httpSolrClient.setConnectionTimeout(connectionTimeout);//socket read timeout httpSolrClient.setAllowCompression(allowCompression); httpSolrClient.setMaxTotalConnections(maxTotalConnections); httpSolrClient.setDefaultMaxConnectionsPerHost(defaltMaxConnectionsPerHost); httpSolrClient.setFollowRedirects(followRedirects); }catch (SolrException e){ System.out.println("請檢查tomcat伺服器或埠是否開啟!"); logger.error(e.getMessage()); e.printStackTrace(); } return httpSolrClient; } /** * 將SolrDocument 轉換為Bean * @param record * @param clazz * @return bean */ public static Object toBean(SolrDocument record, Class clazz){ Object obj = null; try { obj = clazz.newInstance(); } catch (InstantiationException e1) { e1.printStackTrace(); } catch (IllegalAccessException e1) { e1.printStackTrace(); } Field[] fields = clazz.getDeclaredFields(); for(Field field:fields){ Object value = record.get(field.getName()); try { BeanUtils.setProperty(obj, field.getName(), value); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } } return obj; } }
}
相關推薦
JAVA中簡單的MD5加密類(MD5Utils)
com rgs api body md5 mex 可能 title 思路 MD5加密分析: JDK API: 獲取對象的API: 加密的API: 1 package cn.utils; 2 3 import java.security.M
Java中簡單的註冊、登陸例項
1、功能: 實現使用者的註冊,並能根據註冊的資訊正常登陸。 2、分析: a) 具體類 i. 使用者類 1. 使用者基本類 2. 使用者操作類 ii. 測試類 b) 每個具體類的內容 i. 使用者基本類 1. 成員變數:使用者名稱、密碼 2. 構造方法:
JAVA中簡單圖形介面的建立
在java中提供了兩套圖形介面類:AWT元件和SWING元件。 AWT元件jdk1.0的時候就推出的圖形介面類,它是位於java.awt包下的類。當時在開發AWT元件時,採用C和C++的語言,並且還呼叫了作業系統底層的函式來實現AWT元件,也是因為實現語言和作業
Java中簡單使用RabbitMQ進行訊息收發
文章目錄 Windows中安裝RabbitMQ-Server 安裝Erlang 安裝RabbitMQ-Server 需要使用的依賴包 RabbitMQ服務提供類,含訊息接收與傳送 在
3.JAVA中的多型
方法的重寫規則 引數列表必須完全與被重寫方法的相同; 返回型別必須完全與被重寫方法的返回型別相同; 訪問許可權不能比父類中被重寫的方法的訪問許可權更低。例如:如果父類的一個方法被宣告為public,那麼在子類中重寫該方法就不能宣告為protected。 父類的成員方法
Solr6.3 在Java中的簡單使用
import com.backzero.solr.service.SolrService; import com.backzero.solr.util.SolrUtils; import org.apache.solr.client.solrj.SolrQuery; imp
Java中的網絡編程-3
exc main net ddr pri .get string rgs exception UDP:不可靠, 效率高, 數據報/非連接 Demo_1: Server 端: import java.io.IOException; import java.net.*; pu
201671010145 2016-2017-3《Java程序設計》Java中類與對象的區別
import -c indent cin ria wid let isp ans 1.什麽是類呢? 書面語句:類是一種事物,或者一類相同物體的抽象.類是對一個或者幾個相似對象的描述,它把不同對象具有的共性抽象出來.也可以說類是同一類對象的原型. 例如:人就是一個類,因為它是
java中volatile的簡單理解
mic 執行 行修改 java內存 long ack html spa 多少 原創作品,可以轉載,但是請標註出處地址:http://www.cnblogs.com/V1haoge/p/7833881.html 據說,volatile是java語言中最輕量級的並發控制方
java 中 “文件” 和 “流” 的簡單分析
amp 簡單 orm cto abs perm ext rem png java 中 FIle 和 流的簡單分析 File類 簡單File 常用方法 創建一個File 對象,檢驗文件是否存在,若不存在就創建,然後對File的類的這部分操作進行演示,如文件的名稱、大小等 //
Java中Javadoc的{@link}與@see的簡單區別
java http 技術 pan lan 分享圖片 參考 article 圖片 {@link}與@see這兩個Javadoc註解都可以直接鏈接類和方法。用法基本一致。 但是@see必須頂頭寫,而{@link可以任意地方},如下所示: 參考: http:
Java中使用UDP實現簡單的聊天功能
udp http @override 簡單的 ima string [] 發送消息 sock 通過DatagramSocket類來實現。此類表示用來發送和接收數據報包的套接字。 發送端代碼如下: 2 3 import java.io.IOException; 4
JAVA中JDBC連接Mysql數據庫簡單測試
batch 數據庫 count() found rman too zone close static 一、引用庫 maven庫:mysql:mysql-connector-java:6.0.6 二、SDK環境 JAVA JDK10 三、測試代碼
2018.3.31 java中的遞歸
lin package str static n-1 pre 特點 等於 com java中的遞歸 1.概念 定義一個方法時,出現本方法調用本方法的過程,稱之為遞歸 2.特點 必然有一個邊界條件 使用遞歸代碼往往更簡潔,可讀性強 3.什麽時候使用遞歸
java中對於redis的簡單操作
java info img png .com 圖片 jar包 9.png com 添加redis的jar包 java中對於redis的簡單操作
Java中獲取類名的3種方法!
void new t .com 內部類名 clas 推薦 容易 pri new 獲取類名的方法 Java 中獲取類名的方式主要有以下三種。 getName() 返回的是虛擬機裏面的class的類名表現形式。 getCanonicalName() 返回的是更容易理解的
簡述JDBC原理 + 在JAVA中異常是什麽 + throws 與 throw 區別 + 簡單解釋以下JAVA中的多態
鏈接 con 原理 指向 引用 作用 ger 同名方法 nec JDBC原理: 加:加載驅動 鏈:創建連接 預:創建預編譯 執:執行SQL語句(查詢需要處理結果級) 釋:關閉鏈接; DBC中定義了一些接口: 1、驅動管理: DriverMan
java中String、StringBuffer和StringBuilder的區別(簡單介紹)
情況 string 建議 code serializa 就是 同步 安全性 之間 簡單介紹 java中用於處理字符串常用的有三個類: 1、java.lang.String 2、java.lang.StringBuffer 3、java.lang.StrungBuilder
Java中stream的簡單使用
數量 arr 繼續 復數 () static class 簡單使用 簡單介紹 在Java8中,出現了stream流的概念。我個人認為,流的使用可以幫助我們更好的對數據集合進行叠代。 下面,先簡單看一下普通for循環和stream流的代碼。 public static vo
java中int->String 3種方式效率分析
nbsp ecif digits bsp num turn mode getchar obj 1.0 int轉String方式 java中,int轉String共有如下3種方式 (1) 字符串拼接(即num+"") (2) String.valueof(num) (3) I