fix highlighting of accounts in ad-hoc searches and when they have spaces or - in them

This commit is contained in:
millmanorama 2017-02-16 17:13:56 +01:00
parent ad5c00c7c4
commit b7439abfaa
4 changed files with 18 additions and 34 deletions

View File

@ -66,6 +66,7 @@ class AccountsText implements IndexedText {
private static final BlackboardAttribute.Type TSK_KEYWORD_SEARCH_DOCUMENT_ID = new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD_SEARCH_DOCUMENT_ID);
private static final BlackboardAttribute.Type TSK_KEYWORD_HIT_DOCUMENT_IDS = new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD_HIT_DOCUMENT_IDS);
private static final BlackboardAttribute.Type TSK_CARD_NUMBER = new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_CARD_NUMBER);
private static final BlackboardAttribute.Type TSK_KEYWORD = new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD);
private static final String FIELD = Server.Schema.CONTENT_STR.toString();
@ -233,6 +234,10 @@ class AccountsText implements IndexedText {
}
accountNumbers.add(artifact.getAttribute(TSK_CARD_NUMBER).getValueString());
final BlackboardAttribute keywordAttribute = artifact.getAttribute(TSK_KEYWORD);
if (keywordAttribute != null) {
accountNumbers.add(keywordAttribute.getValueString());
}
final BlackboardAttribute docIDs = artifact.getAttribute(TSK_KEYWORD_HIT_DOCUMENT_IDS);
List<String> rawDocIDs = new ArrayList<>();
if (docIDs != null) {

View File

@ -590,19 +590,9 @@ class ExtractedContentPanel extends javax.swing.JPanel {
enableNextPageControl(false);
enablePrevPageControl(false);
} else {
if (source.hasNextPage()) {
enableNextPageControl(true);
} else {
enableNextPageControl(false);
}
if (source.hasPreviousPage()) {
enablePrevPageControl(true);
} else {
enablePrevPageControl(false);
}
enableNextPageControl(source.hasNextPage());
enablePrevPageControl(source.hasPreviousPage());
}
}
/**
@ -613,22 +603,10 @@ class ExtractedContentPanel extends javax.swing.JPanel {
void updateSearchControls(IndexedText source) {
//setup search controls
if (source != null && source.isSearchable()) {
updateCurrentMatchDisplay(source.currentItem());
updateTotaMatcheslDisplay(source.getNumberHits());
if (source.hasNextItem() || source.hasNextPage()) {
enableNextMatchControl(true);
} else {
enableNextMatchControl(false);
}
if (source.hasPreviousItem() || source.hasPreviousPage()) {
enablePrevMatchControl(true);
} else {
enablePrevMatchControl(false);
}
enableNextMatchControl(source.hasNextItem() || source.hasNextPage());
enablePrevMatchControl(source.hasPreviousItem() || source.hasPreviousPage());
} else {
enableNextMatchControl(false);
enablePrevMatchControl(false);

View File

@ -364,19 +364,18 @@ class HighlightedText implements IndexedText {
@Override
public String getText() {
String contentIdStr = Long.toString(this.objectId);
if (hasChunks) {
final String chunkID = Integer.toString(this.currentPage);
contentIdStr += "0".equals(chunkID) ? "" : "_" + chunkID;
}
final String filterQuery = Server.Schema.ID.toString() + ":" + KeywordSearchUtil.escapeLuceneQuery(contentIdStr);
try {
loadPageInfo(); //inits once
SolrQuery q = new SolrQuery();
q.setShowDebugInfo(DEBUG); //debug
String contentIdStr = Long.toString(this.objectId);
if (hasChunks) {
final String chunkID = Integer.toString(this.currentPage);
contentIdStr += "0".equals(chunkID) ? "" : "_" + chunkID;
}
final String filterQuery = Server.Schema.ID.toString() + ":" + KeywordSearchUtil.escapeLuceneQuery(contentIdStr);
if (isLiteral) {
final String highlightQuery = keywords.stream()
.map(HighlightedText::constructEscapedSolrQuery)
@ -435,7 +434,7 @@ class HighlightedText implements IndexedText {
return "<html><pre>" + highlightedContent + "</pre></html>"; //NON-NLS
} catch (Exception ex) {
logger.log(Level.WARNING, "Error getting highlighted text for " + contentIdStr, ex); //NON-NLS
logger.log(Level.WARNING, "Error getting highlighted text for " + objectId, ex); //NON-NLS
return NbBundle.getMessage(this.getClass(), "HighlightedMatchesSource.getMarkup.queryFailedMsg");
}
}

View File

@ -552,6 +552,8 @@ final class RegexQuery implements KeywordSearchQuery {
attributeMap.computeIfAbsent(type, (BlackboardAttribute.Type t) -> {
String value = matcher.group(groupName);
if (attrType.equals(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_CARD_NUMBER)) {
attributeMap.put(new BlackboardAttribute.Type(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD),
new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD, MODULE_NAME, value));
value = CharMatcher.anyOf(" -").removeFrom(value);
}
if (StringUtils.isNotBlank(value)) {