From 04fb197322e967bd2d5b78bba4bdd71fb31454d3 Mon Sep 17 00:00:00 2001 From: millmanorama Date: Fri, 20 Jan 2017 17:10:31 +0100 Subject: [PATCH 1/2] break while(hitMatcher.find()) loop if we find a hit inside the window. --- .../src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java index 4456d4592a..7afb37fcdd 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java @@ -217,6 +217,7 @@ final class RegexQuery implements KeywordSearchQuery { List hits = new ArrayList<>(); final String docId = solrDoc.getFieldValue(Server.Schema.ID.toString()).toString(); + final Integer chunkSize = (Integer) solrDoc.getFieldValue(Server.Schema.CHUNK_SIZE.toString()); String content = solrDoc.getOrDefault(Server.Schema.CONTENT_STR.toString(), "").toString(); //NON-NLS @@ -241,6 +242,11 @@ final class RegexQuery implements KeywordSearchQuery { while (hitMatcher.find(offset)) { StringBuilder snippet = new StringBuilder(); + + if (hitMatcher.start() >= chunkSize) { + break; + } + String hit = hitMatcher.group(); // Back the matcher offset up by 1 character as it will have eaten From d7c22c13a8032674cbe197af2a995957e5241922 Mon Sep 17 00:00:00 2001 From: millmanorama Date: Sun, 22 Jan 2017 16:54:38 +0100 Subject: [PATCH 2/2] pull back chunksize during RegexQuery --- .../src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java index 7afb37fcdd..3aae742571 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/RegexQuery.java @@ -162,9 +162,9 @@ final class RegexQuery implements KeywordSearchQuery { // Set the fields we want to have returned by the query. if (KeywordSearchSettings.getShowSnippets()) { - solrQuery.setFields(Server.Schema.CONTENT_STR.toString(), Server.Schema.ID.toString()); + solrQuery.setFields(Server.Schema.CONTENT_STR.toString(), Server.Schema.ID.toString(), Server.Schema.CHUNK_SIZE.toString()); } else { - solrQuery.setFields(Server.Schema.ID.toString()); + solrQuery.setFields(Server.Schema.ID.toString(), Server.Schema.CHUNK_SIZE.toString()); } filters.stream() .map(KeywordQueryFilter::toString)