@Test public void testProcessDocument() { ContextExtractor extractor = new TopicModelContextExtractor(); MockWordsi wordsi = new MockWordsi(null, extractor); String text = "foxes.n.123 1 1.0 5 2.0 2 4.0 3 4.5 4 0.0 0 0.0"; extractor.processDocument(new BufferedReader(new StringReader(text)), wordsi); assertEquals(6, extractor.getVectorLength()); }
ClientWebSocket( WebSocket.In<JsonNode> in, WebSocket.Out<JsonNode> out, ElasticSearchServer elasticServer) { Logger.info("New ClientWebSocket"); this.socketIn = in; this.socketOut = out; this.elasticServer = elasticServer; ctxEx = ContextExtractor.getInstance(); socketIn.onMessage( new Callback<JsonNode>() { // msg z socketu @Override public void invoke(JsonNode event) { handleEvent(event); } }); socketIn.onClose( new Callback0() { // socket sie zamkna @Override public void invoke() { // stop actor getContext().stop(getSelf()); } }); }
protected void handleEvent(JsonNode event) { // obslug eventow z websocketa if (!event.has("request")) { return; } String request = event.get("request").asText(); if (request.equals("geolocation")) { handleGeolocation(event); return; } else if (request.equals("search")) { // get request data String pattern = event.get("pattern").asText(); Boolean limit = event.get("limit").asText().equals("true"); List<String> tagList = ctxEx.extractTags(pattern); String searchPattern = ctxEx.stripTags(pattern); Logger.info("searching for:" + pattern + " with" + (limit ? "out" : "") + " limit"); Logger.info("search:" + searchPattern + "\ntags:" + tagList.toString()); ArrayList<ArrayList<String>> searchResult = search(searchPattern, limit); if (!tagList.isEmpty()) searchResult = filterOutByTags(searchResult, tagList); if (searchResult == null) { sendEmptyResults(); } else { Logger.info(String.valueOf(searchResult.size()) + " found"); ObjectNode message = Json.newObject(); // create message ArrayNode results = message.putArray("result"); // results array in message Set<String> tagsSet = new HashSet<>(); for (ArrayList<String> result : searchResult) { ObjectNode innerMsg = Json.newObject(); // inner message (file info) innerMsg.put("file", result.get(0)); innerMsg.put("link", result.get(1)); innerMsg.put("size", result.get(2)); ArrayNode tags = innerMsg.putArray("tags"); // tags array in innerMsg (for this file) // odejmujemy 4 ze wzgledu na to ze na poczatku sa 4 elementy ktore nie sa tagami int tagcount = result.size() - 4; for (int tagnr = 0; tagnr < tagcount - 2; tagnr++) { tags.add(result.get(4 + tagnr)); tagsSet.add("\"" + result.get(4 + tagnr) + "\""); } String tempCont = ctxEx.getContext(result.get(3), searchPattern); innerMsg.put("context", tempCont); innerMsg.put("lat", result.get(result.size() - 2)); innerMsg.put("lng", result.get(result.size() - 1)); results.add(innerMsg); } int temp = searchResult.size(); String temp2 = "" + temp; message.put("resultsCount", temp2); message.put("tagList", tagsSet.toString()); socketOut.write(message); } } }