SolrPool.java 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package com.yihu.base;
  2. import org.apache.solr.client.solrj.SolrClient;
  3. import org.apache.solr.client.solrj.impl.CloudSolrClient;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.beans.factory.config.ConfigurableBeanFactory;
  6. import org.springframework.context.annotation.Scope;
  7. import org.springframework.data.solr.server.support.MulticoreSolrClientFactory;
  8. import org.springframework.stereotype.Service;
  9. /**
  10. * Solr连接池
  11. * @author hzp
  12. * @version 1.0
  13. * @created 2016.04.26
  14. */
  15. @Service
  16. @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
  17. public class SolrPool {
  18. @Value("${spring.data.solr.zk-host}")
  19. String zkHost;
  20. private MulticoreSolrClientFactory factory;
  21. protected MulticoreSolrClientFactory getFactory(){
  22. if(factory==null)
  23. {
  24. CloudSolrClient client = new CloudSolrClient(zkHost);
  25. factory = new MulticoreSolrClientFactory(client);
  26. }
  27. return factory;
  28. }
  29. /**
  30. * 获取连接
  31. */
  32. public SolrClient getConnection(String core) throws Exception{
  33. return getFactory().getSolrClient(core);
  34. }
  35. /**
  36. * 关闭连接
  37. */
  38. public void close(String core) throws Exception{
  39. getFactory().removeSolrClient(core);
  40. }
  41. }