mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-17 18:17:43 +00:00
Optimizated algorithm and removed code duplication
This commit is contained in:
parent
102b2b4c56
commit
77330b8c32
@ -247,17 +247,16 @@ class KeywordSearchResultFactory extends ChildFactory<KeyValueQueryContent> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private String getHighlightQuery(KeywordSearchQuery query, boolean literal_query, QueryResults queryResults, Content content) {
|
private String getHighlightQuery(KeywordSearchQuery query, boolean literal_query, QueryResults queryResults, Content content) {
|
||||||
StringBuilder highlightQuery = new StringBuilder();
|
|
||||||
if (literal_query) {
|
if (literal_query) {
|
||||||
//literal, treat as non-regex, non-term component query
|
//literal, treat as non-regex, non-term component query
|
||||||
highlightQuery.append(LuceneQuery.HIGHLIGHT_FIELD_LITERAL).append(":").append("\"").append(KeywordSearchUtil.escapeLuceneQuery(query.getQueryString())).append("\"");
|
return constructEscapedSolrQuery(query.getQueryString(), literal_query);
|
||||||
} else {
|
} else {
|
||||||
//construct a Solr query using aggregated terms to get highlighting
|
//construct a Solr query using aggregated terms to get highlighting
|
||||||
//the query is executed later on demand
|
//the query is executed later on demand
|
||||||
if (queryResults.getKeywords().size() == 1) {
|
if (queryResults.getKeywords().size() == 1) {
|
||||||
//simple case, no need to process subqueries and do special escaping
|
//simple case, no need to process subqueries and do special escaping
|
||||||
Keyword term = queryResults.getKeywords().iterator().next();
|
Keyword term = queryResults.getKeywords().iterator().next();
|
||||||
highlightQuery.append(LuceneQuery.HIGHLIGHT_FIELD_REGEX).append(":").append("\"").append(KeywordSearchUtil.escapeLuceneQuery(term.getQuery())).append("\"");
|
return constructEscapedSolrQuery(term.getQuery(), literal_query);
|
||||||
} else {
|
} else {
|
||||||
//find terms for this content hit
|
//find terms for this content hit
|
||||||
List<Keyword> hitTerms = new ArrayList<>();
|
List<Keyword> hitTerms = new ArrayList<>();
|
||||||
@ -270,20 +269,39 @@ class KeywordSearchResultFactory extends ChildFactory<KeyValueQueryContent> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StringBuilder highlightQuery = new StringBuilder();
|
||||||
final int lastTerm = hitTerms.size() - 1;
|
final int lastTerm = hitTerms.size() - 1;
|
||||||
int curTerm = 0;
|
int curTerm = 0;
|
||||||
for (Keyword term : hitTerms) {
|
for (Keyword term : hitTerms) {
|
||||||
//escape subqueries, MAKE SURE they are not escaped again later
|
//escape subqueries, MAKE SURE they are not escaped again later
|
||||||
highlightQuery.append(LuceneQuery.HIGHLIGHT_FIELD_REGEX).append(":").append("\"").append(KeywordSearchUtil.escapeLuceneQuery(term.getQuery())).append("\"");
|
highlightQuery.append(constructEscapedSolrQuery(term.getQuery(), literal_query));
|
||||||
if (lastTerm != curTerm) {
|
if (lastTerm != curTerm) {
|
||||||
highlightQuery.append(" "); //acts as OR ||
|
highlightQuery.append(" "); //acts as OR ||
|
||||||
}
|
}
|
||||||
|
|
||||||
++curTerm;
|
++curTerm;
|
||||||
}
|
}
|
||||||
|
return highlightQuery.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a complete, escaped Solr query that is ready to be used.
|
||||||
|
*
|
||||||
|
* @param query keyword term to be searched for
|
||||||
|
* @param literal_query flag whether query is literal or regex
|
||||||
|
* @return Solr query string
|
||||||
|
*/
|
||||||
|
private String constructEscapedSolrQuery(String query, boolean literal_query) {
|
||||||
|
StringBuilder highlightQuery = new StringBuilder();
|
||||||
|
String highLightField;
|
||||||
|
if (literal_query) {
|
||||||
|
highLightField = LuceneQuery.HIGHLIGHT_FIELD_LITERAL;
|
||||||
|
} else {
|
||||||
|
highLightField = LuceneQuery.HIGHLIGHT_FIELD_REGEX;
|
||||||
|
}
|
||||||
|
highlightQuery.append(highLightField).append(":").append("\"").append(KeywordSearchUtil.escapeLuceneQuery(query)).append("\"");
|
||||||
return highlightQuery.toString();
|
return highlightQuery.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user