1、代码模块
因为solrj没有提供MySQL的索引支持,所以只能基于http请求实现索引MySQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.client.CookieStore; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.BasicCookieStore; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.message.BasicNameValuePair;
public class SolrDataImportClient { private CloseableHttpClient httpclient = null; private CookieStore cookieStore = null; private final String baseSolrUrl;
private static final String FULL_IMPORT = "full-import";
private static final String DELTA_IMPORT = "delta-import"; public SolrDataImportClient(String baseSolrUrl) { if(!baseSolrUrl.endsWith("/")){ baseSolrUrl += "/"; } this.baseSolrUrl = baseSolrUrl; } private synchronized void init(){ if(httpclient == null){ cookieStore = new BasicCookieStore(); httpclient = HttpClientBuilder.create().setDefaultCookieStore(cookieStore).build(); } } public void fullImport(String coreName) throws IOException { init(); HttpPost post = getDataImportPost(coreName, FULL_IMPORT); httpclient.execute(post); } public void deltaImport(String coreName) throws IOException { init(); HttpPost post = getDataImportPost(coreName, DELTA_IMPORT); httpclient.execute(post); } private HttpPost getDataImportPost(String coreName,String command) throws UnsupportedEncodingException{ HttpPost post = new HttpPost(baseSolrUrl + coreName + "/dataimport?indent=on&wt=json&_=" + new Date().getTime()); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("command", command)); params.add(new BasicNameValuePair("verbose", "false")); if(command.equals(FULL_IMPORT)){ params.add(new BasicNameValuePair("clean", "true")); } params.add(new BasicNameValuePair("commit", "true")); params.add(new BasicNameValuePair("optimize", "false")); params.add(new BasicNameValuePair("core", coreName)); params.add(new BasicNameValuePair("name", "dataimport")); post.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); return post; } public void close() throws IOException{ httpclient.close(); httpclient = null; cookieStore = null; } }
|
2、使用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
@Test public void fullImport() throws Exception{ SolrDataImportClient dataClient = new SolrDataImportClient("http://192.168.100.27:8983/solr/"); dataClient.fullImport("testcore"); dataClient.close(); }
@Test public void deltaImport() throws Exception{ SolrDataImportClient dataClient = new SolrDataImportClient("http://192.168.100.27:8983/solr/"); dataClient.deltaImport("testcore"); dataClient.close(); }
|