mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-15 09:17:42 +00:00
SearchRunner and KeywordSearchPanel now use same logic to select proper KeywordSearchQuery for Keyword
This commit is contained in:
parent
09cc46e736
commit
19212bcdf1
@ -55,22 +55,7 @@ class KeywordSearchQueryDelegator {
|
||||
|
||||
for (KeywordList keywordList : keywordLists) {
|
||||
for (Keyword keyword : keywordList.getKeywords()) {
|
||||
KeywordSearchQuery query;
|
||||
if (keyword.searchTermIsLiteral()) {
|
||||
// literal, exact match
|
||||
if (keyword.searchTermIsWholeWord()) {
|
||||
query = new LuceneQuery(keywordList, keyword);
|
||||
query.escape();
|
||||
} // literal, substring match
|
||||
else {
|
||||
query = new TermsComponentQuery(keywordList, keyword);
|
||||
query.escape();
|
||||
query.setSubstringQuery();
|
||||
}
|
||||
} // regexp
|
||||
else {
|
||||
query = new RegexQuery(keywordList, keyword);
|
||||
}
|
||||
KeywordSearchQuery query = KeywordSearchUtil.getQueryForKeyword(keyword, keywordList);
|
||||
queryDelegates.add(query);
|
||||
}
|
||||
}
|
||||
|
@ -126,6 +126,26 @@ class KeywordSearchUtil {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static KeywordSearchQuery getQueryForKeyword(Keyword keyword, KeywordList keywordList) {
|
||||
KeywordSearchQuery query = null;
|
||||
if (keyword.searchTermIsLiteral()) {
|
||||
// literal, exact match
|
||||
if (keyword.searchTermIsWholeWord()) {
|
||||
query = new LuceneQuery(keywordList, keyword);
|
||||
query.escape();
|
||||
} // literal, substring match
|
||||
else {
|
||||
query = new TermsComponentQuery(keywordList, keyword);
|
||||
query.escape();
|
||||
query.setSubstringQuery();
|
||||
}
|
||||
} // regexp
|
||||
else {
|
||||
query = new RegexQuery(keywordList, keyword);
|
||||
}
|
||||
return query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is the Keyword Search list at absPath an XML list?
|
||||
|
@ -425,14 +425,14 @@ public final class SearchRunner {
|
||||
|
||||
int keywordsSearched = 0;
|
||||
|
||||
for (Keyword keywordQuery : keywords) {
|
||||
for (Keyword keyword : keywords) {
|
||||
if (this.isCancelled()) {
|
||||
logger.log(Level.INFO, "Cancel detected, bailing before new keyword processed: {0}", keywordQuery.getSearchTerm()); //NON-NLS
|
||||
logger.log(Level.INFO, "Cancel detected, bailing before new keyword processed: {0}", keyword.getSearchTerm()); //NON-NLS
|
||||
return null;
|
||||
}
|
||||
|
||||
final String queryStr = keywordQuery.getSearchTerm();
|
||||
final KeywordList list = keywordToList.get(queryStr);
|
||||
final String queryStr = keyword.getSearchTerm();
|
||||
final KeywordList keywordList = keywordToList.get(queryStr);
|
||||
|
||||
//new subProgress will be active after the initial query
|
||||
//when we know number of hits to start() with
|
||||
@ -440,15 +440,7 @@ public final class SearchRunner {
|
||||
subProgresses[keywordsSearched - 1].finish();
|
||||
}
|
||||
|
||||
KeywordSearchQuery keywordSearchQuery = null;
|
||||
|
||||
boolean isRegex = !keywordQuery.searchTermIsLiteral();
|
||||
if (isRegex) {
|
||||
keywordSearchQuery = new RegexQuery(list, keywordQuery);
|
||||
} else {
|
||||
keywordSearchQuery = new LuceneQuery(list, keywordQuery);
|
||||
keywordSearchQuery.escape();
|
||||
}
|
||||
KeywordSearchQuery keywordSearchQuery = KeywordSearchUtil.getQueryForKeyword(keyword, keywordList);
|
||||
|
||||
// Filtering
|
||||
//limit search to currently ingested data sources
|
||||
@ -462,14 +454,14 @@ public final class SearchRunner {
|
||||
try {
|
||||
queryResults = keywordSearchQuery.performQuery();
|
||||
} catch (KeywordSearchModuleException | NoOpenCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Error performing query: " + keywordQuery.getSearchTerm(), ex); //NON-NLS
|
||||
MessageNotifyUtil.Notify.error(Bundle.SearchRunner_query_exception_msg() + keywordQuery.getSearchTerm(), ex.getCause().getMessage());
|
||||
logger.log(Level.SEVERE, "Error performing query: " + keyword.getSearchTerm(), ex); //NON-NLS
|
||||
MessageNotifyUtil.Notify.error(Bundle.SearchRunner_query_exception_msg() + keyword.getSearchTerm(), ex.getCause().getMessage());
|
||||
//no reason to continue with next query if recovery failed
|
||||
//or wait for recovery to kick in and run again later
|
||||
//likely case has closed and threads are being interrupted
|
||||
return null;
|
||||
} catch (CancellationException e) {
|
||||
logger.log(Level.INFO, "Cancel detected, bailing during keyword query: {0}", keywordQuery.getSearchTerm()); //NON-NLS
|
||||
logger.log(Level.INFO, "Cancel detected, bailing during keyword query: {0}", keyword.getSearchTerm()); //NON-NLS
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -487,14 +479,14 @@ public final class SearchRunner {
|
||||
int totalUnits = newResults.getKeywords().size();
|
||||
subProgresses[keywordsSearched].start(totalUnits);
|
||||
int unitProgress = 0;
|
||||
String queryDisplayStr = keywordQuery.getSearchTerm();
|
||||
String queryDisplayStr = keyword.getSearchTerm();
|
||||
if (queryDisplayStr.length() > 50) {
|
||||
queryDisplayStr = queryDisplayStr.substring(0, 49) + "...";
|
||||
}
|
||||
subProgresses[keywordsSearched].progress(list.getName() + ": " + queryDisplayStr, unitProgress);
|
||||
subProgresses[keywordsSearched].progress(keywordList.getName() + ": " + queryDisplayStr, unitProgress);
|
||||
|
||||
// Create blackboard artifacts
|
||||
newArtifacts = newResults.writeAllHitsToBlackBoard(null, subProgresses[keywordsSearched], this, list.getIngestMessages());
|
||||
newArtifacts = newResults.writeAllHitsToBlackBoard(null, subProgresses[keywordsSearched], this, keywordList.getIngestMessages());
|
||||
|
||||
} //if has results
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user