package zh.solr.se.indexer.solrproxy;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.core.SolrCore;
import java.util.logging.Level;
import java.util.logging.Logger;
public class LocalSolrServer {
private final EmbeddedSolrServer solrServer;
private final SolrCore solrCore;
private static Logger logger = Logger.getLogger("LocalSolrServer");
protected LocalSolrServer(final EmbeddedSolrServer solrServer,
final SolrCore solrCore) {
this.solrServer = solrServer;
this.solrCore = solrCore;
logger.setLevel(Level.ALL);
}
/**
* Add a Solr document to the index
*
* @param solrDoc
* @throws Exception
* when an I/O problem occurs
*/
public void addDocument(final SolrInputDocument solrDoc) throws Exception {
solrServer.add(solrDoc);
}
/**
* Optimize the index to 1 index file after indexing is done
*
* @throws Exception
* when an I/O problem occurs
*/
public void optimize() throws Exception {
if (solrServer != null) {
logger.log(Level.INFO, "Optimizing solr server");
solrServer.optimize(false, true, 1);
}
}
/**
* commit the changes to index
*
* @throws Exception
* if there is an IO problem
*/
public void commit() throws Exception {
if (solrServer != null) {
logger.log(Level.INFO, "Committing solr server");
solrServer.commit();
}
}
public void forceCommit() throws Exception {
logger.log(Level.INFO, "Force commit solr server");
final UpdateRequest req = new UpdateRequest();
req.setAction(AbstractUpdateRequest.ACTION.COMMIT, false, false);
final UpdateResponse rsp = req.process(solrServer);
}
public void close() {
if (solrServer != null) {
logger.log(Level.INFO, "Closing solr server");
solrCore.close();
}
}
public static void main(final String[] args)
throws UnsupportedCoreException {
final LocalSolrServer proxy = LocalSolrServerFactory.getInstance()
.getLocalSolrServer("core-qa");
proxy.close();
}
}