diff --git a/backend/foodspector/foodspector.iml b/backend/foodspector/foodspector.iml index 3636417aa8db7f81210f478c9769fb6443af5b6b..310f874b79989d9485d09c44c38aa81078202ea1 100644 --- a/backend/foodspector/foodspector.iml +++ b/backend/foodspector/foodspector.iml @@ -21,9 +21,6 @@ <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.61" level="project" /> <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-server:9.4.25.v20191220" level="project" /> <orderEntry type="library" name="Maven: javax.servlet:javax.servlet-api:3.1.0" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-http:9.4.25.v20191220" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-util:9.4.25.v20191220" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-io:9.4.25.v20191220" level="project" /> <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-webapp:9.4.25.v20191220" level="project" /> <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-xml:9.4.25.v20191220" level="project" /> <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-servlet:9.4.25.v20191220" level="project" /> @@ -32,7 +29,6 @@ <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-common:9.4.25.v20191220" level="project" /> <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-api:9.4.25.v20191220" level="project" /> <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-client:9.4.25.v20191220" level="project" /> - <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-client:9.4.25.v20191220" level="project" /> <orderEntry type="library" name="Maven: org.eclipse.jetty.websocket:websocket-servlet:9.4.25.v20191220" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.10.1" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.10.1" level="project" /> @@ -61,5 +57,32 @@ <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.30" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:jcl-over-slf4j:1.7.30" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:log4j-over-slf4j:1.7.30" level="project" /> + <orderEntry type="library" name="Maven: org.apache.solr:solr-solrj:8.5.0" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-buffer:4.1.29.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-codec:4.1.29.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-common:4.1.29.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-handler:4.1.29.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.29.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-transport:4.1.29.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-transport-native-epoll:4.1.29.Final" level="project" /> + <orderEntry type="library" name="Maven: io.netty:netty-transport-native-unix-common:4.1.29.Final" level="project" /> + <orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" /> + <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.5.10" level="project" /> + <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.4.12" level="project" /> + <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpmime:4.5.10" level="project" /> + <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper:3.5.5" level="project" /> + <orderEntry type="library" name="Maven: org.apache.zookeeper:zookeeper-jute:3.5.5" level="project" /> + <orderEntry type="library" name="Maven: org.codehaus.woodstox:stax2-api:3.1.4" level="project" /> + <orderEntry type="library" name="Maven: org.codehaus.woodstox:woodstox-core-asl:4.4.1" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-alpn-client:9.4.24.v20191120" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-alpn-java-client:9.4.24.v20191120" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-client:9.4.24.v20191120" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-http:9.4.24.v20191120" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-io:9.4.24.v20191120" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty:jetty-util:9.4.24.v20191120" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty.http2:http2-client:9.4.24.v20191120" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty.http2:http2-common:9.4.24.v20191120" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty.http2:http2-hpack:9.4.24.v20191120" level="project" /> + <orderEntry type="library" name="Maven: org.eclipse.jetty.http2:http2-http-client-transport:9.4.24.v20191120" level="project" /> </component> </module> \ No newline at end of file diff --git a/backend/foodspector/pom.xml b/backend/foodspector/pom.xml index 8f01ed6a2155156286d14e3dfba3d479b7b9fd6f..fad64c12d3d45b00540df2c0fdce954dc3d84c07 100644 --- a/backend/foodspector/pom.xml +++ b/backend/foodspector/pom.xml @@ -63,5 +63,11 @@ <version>4.5.1</version> </dependency> + <dependency> + <groupId>org.apache.solr</groupId> + <artifactId>solr-solrj</artifactId> + <version>8.5.0</version> + </dependency> + </dependencies> </project> 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 ed3f1095e2eb0123847f6e4b172b1af9d89138b2..11a9022e7d9f1825397ea7ee32885325329fae75 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 @@ -4,16 +4,21 @@ import io.javalin.http.Context; import io.javalin.http.UploadedFile; import net.sourceforge.tess4j.*; import net.sourceforge.tess4j.util.LoadLibs; +import org.apache.solr.client.solrj.SolrClient; +import org.apache.solr.client.solrj.SolrQuery; +import org.apache.solr.client.solrj.SolrRequest; +import org.apache.solr.client.solrj.SolrResponse; +import org.apache.solr.client.solrj.impl.HttpSolrClient; +import org.apache.solr.client.solrj.response.QueryResponse; +import org.apache.solr.common.SolrDocumentList; +import org.apache.solr.common.params.SolrParams; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; import java.io.ByteArrayInputStream; import java.io.File; -import java.util.Base64; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; public class ImageController { @@ -50,8 +55,41 @@ public class ImageController { List.of(ITesseract.RenderedFormat.TEXT), ITessAPI.TessPageIteratorLevel.RIL_WORD); */ String result = tess.doOCR(test); - System.out.println(result); - } catch (TesseractException e) { + // 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) { + e.printStackTrace(); + } + + }); + + + + // System.out.println(result); + } catch (Exception e) { System.err.println(e.getMessage()); } }