From f4219ee26777d7a9168df03effd9ce3afbab9c80 Mon Sep 17 00:00:00 2001 From: "ricardo.nunesdeo" <ricardo.nunes-de-oliveira@etu.hesge.ch> Date: Fri, 26 Jun 2020 09:59:03 +0200 Subject: [PATCH] Added SolrClient Singleton. --- .../java/ch/hepia/foodspector/SolrClient.java | 43 +++++++++++++++++++ .../controllers/ImageController.java | 33 +------------- 2 files changed, 45 insertions(+), 31 deletions(-) create mode 100644 backend/foodspector/src/main/java/ch/hepia/foodspector/SolrClient.java diff --git a/backend/foodspector/src/main/java/ch/hepia/foodspector/SolrClient.java b/backend/foodspector/src/main/java/ch/hepia/foodspector/SolrClient.java new file mode 100644 index 0000000..5d7abf0 --- /dev/null +++ b/backend/foodspector/src/main/java/ch/hepia/foodspector/SolrClient.java @@ -0,0 +1,43 @@ +package ch.hepia.foodspector; + +import org.apache.solr.client.solrj.SolrQuery; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.common.SolrDocumentList; + +public class SolrClient { + + private static String SOLR_URL = "http://localhost:8983/solr"; + private static SolrClient inst; + private HttpSolrClient client; + + private SolrClient(String solrUrl) { + client = new HttpSolrClient.Builder(solrUrl) + .withConnectionTimeout(10000) + .withSocketTimeout(60000) + .build(); + } + + public static SolrClient getInstance() { + if(inst == null) + inst = new SolrClient( SOLR_URL ); + return inst; + } + + public void query( String word ) { + SolrQuery query = new SolrQuery(); + query.setRequestHandler("/montest"); + System.out.println( word.strip().replaceAll("[-+.^:,()]","")); + query.set( "q", "name:" + word.strip().replaceAll("[-+.^:,()]","") ); + + try { + QueryResponse r = client.query( "foodspector", query ); + SolrDocumentList list = r.getResults(); + list.forEach( System.out::println ); + } catch (Exception e) { + System.out.println(e.getMessage()); + } + + System.out.println( "=========" ); + } +} diff --git a/backend/foodspector/src/main/java/ch/hepia/foodspector/controllers/ImageController.java b/backend/foodspector/src/main/java/ch/hepia/foodspector/controllers/ImageController.java index 0103b33..fdfb426 100644 --- a/backend/foodspector/src/main/java/ch/hepia/foodspector/controllers/ImageController.java +++ b/backend/foodspector/src/main/java/ch/hepia/foodspector/controllers/ImageController.java @@ -1,5 +1,6 @@ package ch.hepia.foodspector.controllers; +import ch.hepia.foodspector.SolrClient; import io.javalin.http.Context; import io.javalin.http.UploadedFile; import net.sourceforge.tess4j.ITesseract; @@ -49,37 +50,7 @@ public class ImageController { try { String result = tess.doOCR(test); - Arrays.stream( result.split(",") ).forEach( t -> System.out.println(t.strip()) ); - - - // Inits the Solr Client. - final String solrUrl = "http://localhost:8983/solr"; - HttpSolrClient solrClient = new HttpSolrClient.Builder(solrUrl) - .withConnectionTimeout(10000) - .withSocketTimeout(60000) - .build(); - - Arrays.stream( result.split(",") ).forEach( t -> { - - try { - - SolrQuery query = new SolrQuery(); - query.setRequestHandler("/select"); - System.out.println( t.strip().replaceAll("[-+.^:,()]","")); - query.set( "q", "name:" + t.strip().replaceAll("[-+.^:,()]","") ); - - QueryResponse r = solrClient.query( "foodspector", query ); - SolrDocumentList list = r.getResults(); - - list.forEach( System.out::println ); - System.out.println( "=========" ); - - } catch (Exception e) { - System.out.println( e.getMessage() ); - } - - }); - // System.out.println(result); + Arrays.stream( result.split(",") ).forEach(SolrClient.getInstance()::query); } catch (Exception e) { System.err.println(e.getMessage()); } -- GitLab