package com.chenlb.mmseg4j.solr;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrResourceLoader;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.util.plugin.SolrCoreAware;
import com.chenlb.mmseg4j.Dictionary;
/**
* mmseg4j 的 solr handler,用于检测词库,查看状态等。
*
* @author chenlb 2009-10-12 上午10:53:38
*/
public class MMseg4jHandler extends RequestHandlerBase implements SolrCoreAware {
//private File solrHome = null;
private SolrResourceLoader loader = null;
public String getDescription() {
return "";
}
public String getSource() {
return "$URL: http://mmseg4j.googlecode.com/svn/trunk/src/com/chenlb/mmseg4j/solr/MMseg4jHandler.java $";
}
public String getSourceId() {
return "$Revision: 63 $";
}
public String getVersion() {
return "1.8";
}
public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
rsp.setHttpCaching(false);
final SolrParams solrParams = req.getParams();
String dicPath = solrParams.get("dicPath");
Dictionary dict = Utils.getDict(dicPath, loader);
NamedList<Object> result = new NamedList<Object>();
result.add("dicPath", dict.getDicPath().toURI());
boolean check = solrParams.getBool("check", false); //仅仅用于检测词库是否有变化
//用于尝试加载词库,有此参数, check 参数可以省略。
boolean reload = solrParams.getBool("reload", false);
check |= reload;
boolean changed = false;
boolean reloaded = false;
if(check) {
changed = dict.wordsFileIsChange();
result.add("changed", changed);
}
if(changed && reload) {
reloaded = dict.reload();
result.add("reloaded", reloaded);
}
rsp.add("result", result);
}
public void inform(SolrCore core) {
loader = core.getResourceLoader();
//solrHome = new File(loader.getInstanceDir());
}
}