package won.matcher.solr; import com.github.jsonldjava.core.JsonLdError; import org.apache.jena.query.Dataset; import org.apache.jena.query.DatasetFactory; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrException; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import won.bot.framework.component.needproducer.NeedProducer; import won.bot.framework.component.needproducer.impl.RoundRobinCompositeNeedProducer; import won.matcher.solr.hints.HintBuilder; import won.matcher.solr.query.TestMatcherQueryExecutor; import won.matcher.solr.query.factory.BasicNeedQueryFactory; import won.matcher.solr.query.factory.TestNeedQueryFactory; import won.matcher.solr.spring.SolrTestAppConfiguration; import java.io.IOException; /** * Created by hfriedrich on 03.08.2016. * <p> * Utility test app to query an Solr index and check what results it returns. */ public class SolrMatcherQueryTest { public static void main(String[] args) throws IOException, InterruptedException, JsonLdError, SolrServerException { AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SolrTestAppConfiguration.class); HintBuilder hintBuilder = ctx.getBean(HintBuilder.class); //DefaultMatcherQueryExecuter queryExecutor = ctx.getBean(DefaultMatcherQueryExecuter.class); TestMatcherQueryExecutor queryExecutor = ctx.getBean(TestMatcherQueryExecutor.class); // set the options of the need producer (e.g. if it should exhaust) in the SolrNeedIndexerAppConfiguration file NeedProducer needProducer = ctx.getBean(RoundRobinCompositeNeedProducer.class); while (!needProducer.isExhausted()) { //&& needs < 20) { Dataset ds = DatasetFactory.createTxnMem(); ds.addNamedModel("https://node.matchat.org/won/resource/need/test#need", needProducer.create()); try { TestNeedQueryFactory needQuery = new TestNeedQueryFactory(ds); String query = needQuery.createQuery(); System.out.println("execute query: " + query); SolrDocumentList docs = queryExecutor.executeNeedQuery(query, null, new BasicNeedQueryFactory(ds).createQuery()); SolrDocumentList matchedDocs = hintBuilder.calculateMatchingResults(docs); System.out.println("Found docs: " + ((docs != null) ? docs.size() : 0) + ", keep docs: " + ((matchedDocs != null) ? matchedDocs.size() : 0)); if (docs == null) { continue; } System.out.println("Keep docs: "); System.out.println("======================"); for (SolrDocument doc : matchedDocs) { String score = doc.getFieldValue("score").toString(); String matchedNeedId = doc.getFieldValue("id").toString(); System.out.println("Score: " + score + ", Id: " + matchedNeedId); } System.out.println("All docs: "); System.out.println("======================"); for (SolrDocument doc : docs) { String score = doc.getFieldValue("score").toString(); String matchedNeedId = doc.getFieldValue("id").toString(); System.out.println("Score: " + score + ", Id: " + matchedNeedId); } } catch (SolrException e) { System.err.println(e); } } System.exit(0); } }