content: package com.alimama.mdrill.index.utils;
  
  import java.io.IOException;
  import java.util.Map.Entry;
  
  import javax.xml.parsers.ParserConfigurationException;
  
  import org.apache.lucene.analysis.Analyzer;
  import org.apache.lucene.document.Document;
  
  import org.apache.solr.common.SolrInputDocument;
  import org.apache.solr.core.SolrConfig;
  import org.apache.solr.schema.*;
  import org.apache.solr.update.DocumentBuilder;
  import org.xml.sax.InputSource;
  import org.xml.sax.SAXException;
  import org.apache.lucene.index.*;
  
  public class DocumentConverter {
  	private IndexSchema schema=null;
  	
  	private void initSchema(String config,String schema) throws ParserConfigurationException, IOException, SAXException
  	{
  	    SolrConfig solrConfig = new SolrConfig(config);
  	    InputSource is = new InputSource(solrConfig.getResourceLoader().openSchema(schema));
  	    this.schema =new IndexSchema(solrConfig, "solrconfig",is);
  	    TermInfosWriter.setSchema(this.schema);
  	}
  	
  	public Analyzer getAnalyzer()
  	{
  		return this.schema.getAnalyzer();
  	}
  	
  	public DocumentConverter(String[] fields,String config,String schema) {
  	    try {
  	        this.initSchema(config, schema);
              } catch (ParserConfigurationException e) {
              	 e.printStackTrace();
              } catch (IOException e) {
              	 e.printStackTrace();
              } catch (SAXException e) {
              	 e.printStackTrace();
              }
  	}
  	
      public Document convert(java.util.Map<String, String> value) {
  
  	    SolrInputDocument doc = new SolrInputDocument();
  	    for (Entry<String, String> e : value.entrySet()) {
  		String fieldName = e.getKey();
  		String fieldValue = e.getValue();
  		doc.addField(fieldName, fieldValue);
  	    }
  
  	    return DocumentBuilder.toDocument(doc, this.schema);
  	
      }
  }
  