七、通過java程式碼實現增量、全量索引
前期對solr全文檢索已經做了絕大部分的工作,現在剩下的就是如何讓索引自動載入,包括全量載入及增量載入。
1.首先要實現自動的全量載入及增量載入就要通過定時任務來實現,這裡定時任務的編寫不在這裡描述。
2.如下是我在專案中的全量、增量載入的程式碼:
package com.ultrapower.bpm.interfaces; import java.io.IOException; import java.util.Properties; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.log4j.Logger; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrServer; 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.core.io.support.PropertiesLoaderUtils; import com.ultrapower.bpm.process.action.ProcessAction; import com.ultrapower.bpm.sheet.manage.PreemptiveAuthInterceptor; public class AddSolrOperator { //======================================讀取配置檔案中solr的URL public static String SOLR_URL = ""; public static String SOLR_IP = ""; public static String SOLR_PORT = ""; private static Logger log = Logger.getLogger(ProcessAction.class); static{ try { Properties properties = PropertiesLoaderUtils.loadAllProperties("solrURL.properties"); SOLR_URL = properties.getProperty("solr.url"); SOLR_IP = properties.getProperty("solr.ip"); SOLR_PORT = properties.getProperty("solr.port"); } catch (IOException e) { log.error("讀取solrURL.properties出現異常!!", e); } } //====================================== // private static final String DEFAULT_URL = "http://localhost:8088/solr/"; // http://localhost:8088/solr/collection1/dataimport?command=delta-import&clean=false&commit=true&entity=up_knowledge&optimize=false // http://localhost:8088/solr/collection1/dataimport?command=delta-import&clean=false&commit=true&optimize=false public static HttpSolrServer solr=null ; @SuppressWarnings("unchecked") public synchronized void scanInterface() throws IOException{ solr= new HttpSolrServer(SOLR_URL); //====進行使用者驗證,因為tomcat中設定了使用者驗證,所以為了能連線伺服器必需要驗證使用者,否則不能連通伺服器 DefaultHttpClient m_client =(DefaultHttpClient)solr.getHttpClient(); UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("admin","admin"); m_client.addRequestInterceptor(new PreemptiveAuthInterceptor(),0); (((DefaultHttpClient)m_client).getCredentialsProvider()).setCredentials(new AuthScope(SOLR_IP,Integer.parseInt(SOLR_PORT)), credentials); //====== // AddSolrOperator add=new AddSolrOperator(); buildIndex(false); SolrInputDocument doc = new SolrInputDocument(); try { } catch (Exception e) { e.printStackTrace(); } } /** * 增量/全量建立索引 。 * * @param delta false,增量建立索引;true,重建所有索引 * @throws IOException */ public static void buildIndex(boolean delta) throws IOException { SolrQuery query = new SolrQuery(); // 指定RequestHandler,預設使用/select query.setRequestHandler("/dataimport"); String command = delta ? "full-import" : "delta-import"; String clean = delta ? "true" : "false"; String optimize = delta ? "true" : "false"; query.setParam("command", command) .setParam("clean", false) .setParam("commit", "true") // .setParam("entity", "") .setParam("optimize", optimize); try { solr.query(query); solr.commit(); System.out.println(" ///////////"+command); } catch (SolrServerException e) { e.printStackTrace(); } } }
相關推薦
七、通過java程式碼實現增量、全量索引
前期對solr全文檢索已經做了絕大部分的工作,現在剩下的就是如何讓索引自動載入,包括全量載入及增量載入。 1.首先要實現自動的全量載入及增量載入就要通過定時任務來實現,這裡定時任務的編寫不在這裡描述。 2.如下是我在專案中的全量、增量載入的程式碼: packag
hadoop入門之通過java程式碼實現將本地檔案上傳到hadoop的檔案系統
package upload;import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.URI
演算法學習——中國大學MOOC-陳越、何欽銘-資料結構-起步能力自測題——java程式碼實現
自測-1 列印沙漏 (20 point(s)) 本題要求你寫個程式把給定的符號列印成沙漏的形狀。例如給定17個“*”,要求按下列格式列印 ***** *** * *** ***** 所謂“沙漏形狀”,是指每行輸出奇數個符號;各行符號中心對齊;相鄰兩行符號數差2;符號數先從大
SprinvAction學習一、裝配bean:通過Java程式碼裝配bean
具體步驟 (1)普通的介面 (2)實現介面的類,該類為需要裝配到spring bean中 (3)配置類,由該類定義bean 示例程式碼: 介面1:(普通的介面) package com.sp
【資料結構與演算法】之單鏈表、雙鏈表、迴圈連結串列的基本介紹及其Java程式碼實現---第三篇
一、連結串列的基本介紹 連結串列的定義:連結串列是一種遞迴的資料結構,它或者為空(null),或者是指向一個結點(node)的引用,該結點含有一個泛型的元素和一個指向另一條連結串列的引用。----Algorithms Fourth Edition 常見的連結串
(一)ArrayList和LinkedList的原理、Java程式碼實現、效能比較
一、ArrayList1.1、陣列和集合的區別 動態大小,即陣列的大小不可變,集合的大小可變。 ArrayList從名字上來講是陣列列表,表面上是動態大小,其底層實現原理其實還是一個數組。1.2、簡單模擬ArrayList 模擬過程中要注意Array和Arr
通過java程式碼 測試高併發、伺服器
話不多少 上程式碼Maven 座標 <!-- http球球 --> <dependency> <groupId>org.apache.httpcomponents</groupId> <art
選擇排序、樹形排序、堆排序的java程式碼實現
package com.sort; /** * 選擇排序: * 簡單選擇排序,樹形選擇排序與堆排序 * */ public class SelecSortDemo { /** * ------------
【資料結構】圖(深度優先遍歷、廣度優先遍歷)的JAVA程式碼實現
圖的遍歷是指從圖中的任一頂點出發,對圖中的所有頂點訪問一次並且只訪問一次。圖的遍歷是圖的一種基本操作,圖中的許多其他操作也都是建立在遍歷的基礎之上。在圖中,沒有特殊的頂點被指定為起始頂點,圖的遍歷可以從任何頂點開始。圖的遍歷主要有深度優先搜尋和廣度優先搜尋兩種方式。深度優先搜
java程式碼實現CSV檔案讀取、將資料拆分成多個CSV檔案及資料匯出到CSV檔案
package com.cn; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; impor
經典內部排序演算法學習總結(演算法思想、視覺化、Java程式碼實現、改進、複雜度分析、穩定性分析)
一、什麼是排序演算法? 排序,顧名思義,就是按照一定的規則排列事物,使之彼此間有序 而排序演算法所要做的工作,就是將資料按照人為制定的比較規則排列好,使資料處於彼此間有序的狀態。 二、為什麼要進行排序? 那為什麼要將資料排序呢?計算機處理速度這麼
【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現
堆疊(stack)是一種特殊的線性表,是一種只允許在表的一端進行插入或刪除操作的線性表。表中允許進行插入和刪除操作的一端稱為棧頂,最下面的那一端稱為棧底。棧頂是動態的,它由一個稱為棧頂指標的位置指示器指示。當棧中沒有資料元素時,為空棧。堆疊的插入操作稱為進棧或入棧,堆疊的刪除
【資料結構】二叉樹(順序儲存、鏈式儲存)的JAVA程式碼實現
二叉樹是一種非線性的資料結構。它是由n個有限元素的集合,該集合或者為空、或者由一個稱為根(root)的元素及兩顆不相交的、被分別稱為左子樹、右子樹的二叉樹組成。當集合為空時,稱該二叉樹為空二叉樹。在二叉樹中,一個元素也可以稱做一個結點。二叉樹是有序的,即若將其左右兩個子樹顛倒
【iText5 生成PDF】純Java程式碼實現生成PDF(自定義表格、文字水印、單元格樣式)
工作中遇到需要生成PDF。最終選擇了iText。其他也有通過html再生成。感覺不太適合就用了程式碼實
HIVE的安裝配置、mysql的安裝、hive建立表、建立分割槽、修改表等內容、hive beeline使用、HIVE的四種資料匯入方式、使用Java程式碼執行hive的sql命令
1.上傳tar包 這裡我上傳的是apache-hive-1.2.1-bin.tar.gz 2.解壓 mkdir -p /home/tuzq/software/hive/ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /home/
pc端通過拖放實現新增、刪除功能
話不多說上完整程式碼 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href="favicon.ico" mce_href="favico
第一個 spring Boot 應用通過Docker 來實現構建、執行、釋出
1. Docker 簡介 Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。Docker image 是
jsp頁面中的java程式碼(jsp表示式、jsp小指令碼、jsp宣告)
jsp頁面中的java程式碼,有三種:jsp表示式、jsp小指令碼、jsp宣告。 編寫位置:頁面的任意位置。 作用:控制頁面中可變內容的產生。 1.jsp表示式 語法規則:<%= ... %> 轉譯成 Servlet 時的規則:在 service()方法中用 o
Java程式碼靜態檢查、規範、格式化和checkstyle檢查配置文件
<?xml version="1.0"?> <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycrawl.co
windows 下 MySQL讀寫分離、主從複製、通過amoeba代理實現讀寫分離 配置全過程
配置環境: 1.mysql5.6 2.windowsXP 主從複製配置 主伺服器配置 配置my.ini檔案 查詢my.ini地址 my.ini檔案在MySQL Server 5.6目錄下 我的my.ini路徑: C:\Documents and Settings\All