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_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_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_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(); 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()); 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); final BlackboardAttribute docIDs = artifact.getAttribute(TSK_KEYWORD_HIT_DOCUMENT_IDS);
List<String> rawDocIDs = new ArrayList<>(); List<String> rawDocIDs = new ArrayList<>();
if (docIDs != null) { if (docIDs != null) {

View File

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

View File

@ -364,19 +364,18 @@ class HighlightedText implements IndexedText {
@Override @Override
public String getText() { 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 { try {
loadPageInfo(); //inits once loadPageInfo(); //inits once
SolrQuery q = new SolrQuery(); SolrQuery q = new SolrQuery();
q.setShowDebugInfo(DEBUG); //debug 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) { if (isLiteral) {
final String highlightQuery = keywords.stream() final String highlightQuery = keywords.stream()
.map(HighlightedText::constructEscapedSolrQuery) .map(HighlightedText::constructEscapedSolrQuery)
@ -435,7 +434,7 @@ class HighlightedText implements IndexedText {
return "<html><pre>" + highlightedContent + "</pre></html>"; //NON-NLS return "<html><pre>" + highlightedContent + "</pre></html>"; //NON-NLS
} catch (Exception ex) { } 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"); 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) -> { attributeMap.computeIfAbsent(type, (BlackboardAttribute.Type t) -> {
String value = matcher.group(groupName); String value = matcher.group(groupName);
if (attrType.equals(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_CARD_NUMBER)) { 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); value = CharMatcher.anyOf(" -").removeFrom(value);
} }
if (StringUtils.isNotBlank(value)) { if (StringUtils.isNotBlank(value)) {