So I came up with the following class.

public class LatestTimestampEvaluator extends Evaluator {

  private static final Logger logger =
Logger.getLogger(LatestTimestampEvaluator.class.getName());

  @Override
  public String evaluate(String expression, Context context) {

    List params = EvaluatorBag.parseParams(expression,
context.getVariableResolver());
    String field = params.get(0).toString();

    SolrCore core = context.getSolrCore();
    CoreContainer container = new CoreContainer();
    container.register(core, false);
    EmbeddedSolrServer server = new EmbeddedSolrServer(container,
core.getName());

    SolrQuery query = new SolrQuery("*:*");
    query.addSortField(field, SolrQuery.ORDER.desc);
    query.setRows(1);

    try {
      QueryResponse response = null;
      response = server.query(query);

      SolrDocument document = response.getResults().get(0);
      Date date = (Date) document.getFirstValue(field);
      String timestamp = new Timestamp(date.getTime()).toString();
      logger.info(timestamp);
      
      return timestamp;
    } catch (Exception exception) {
      logger.severe(exception.getMessage());
      logger.severe(DocumentUtils.stackTraceToString(exception));

      return null;
    } finally {
      core.close();
      container.shutdown();
    }
  }

and I am calling it within my dataconfig file like so...

<dataConfig>
  <function name="latest_timestamp"
class="com.mycompany.solr.handler.dataimport.LatestTimestampEvaluator"/>
...

  <entity name="item" ... 
              deltaQuery="select id from items where  updated_on >
'${dataimporter.functions.latest_timestamp('updated_on')}'
   ....
   </entity>
</datConfig>

I was hoping someone can 

1) Comment on the above class. How does it suck? This was my first time
working with SolrJ.
2) It seems to work find when I there is only one entity using that function
but when there are more entities using that function (which is my use case)
I get a "SEVERE: java.util.concurrent.RejectedExecutionException" exception.
Can someone explain why this is happening and how I can fix it. I added the
full stack trace to a separate thread here:
http://lucene.472066.n3.nabble.com/SEVERE-java-util-concurrent-RejectedExecutionException-tp782768p782768.html

Thanks for your help!
-- 
View this message in context: 
http://lucene.472066.n3.nabble.com/Custom-DIH-variables-tp777696p782769.html
Sent from the Solr - User mailing list archive at Nabble.com.

Reply via email to