use of com.thinkbiganalytics.search.rest.model.Pair in project kylo by Teradata.
the class ElasticSearchSearchResultTransform method getCategoryMetadataSearchResultData.
private CategoryMetadataSearchResultData getCategoryMetadataSearchResultData(SearchHit searchHit) {
// jcr has no notion of null-valued property. So, account for the situation when there is no tag present.
final String TBA_SYSTEM_NAME = "tba:systemName";
final String JCR_TITLE = "jcr:title";
final String JCR_DESCRIPTION = "jcr:description";
final String TBA_SYSTEM_NAME_NEW_DESCRIPTION = "System name (Kylo)";
final String JCR_TITLE_NEW_DESCRIPTION = "Title";
final String JCR_DESCRIPTION_NEW_DESCRIPTION = "Description";
Map<String, Object> searchHitSourceMap = searchHit.sourceAsMap();
CategoryMetadataSearchResultData categoryMetadataSearchResultData = new CategoryMetadataSearchResultData();
List<Pair> highlightsList = new ArrayList<>();
if (searchHitSourceMap.containsKey(TBA_SYSTEM_NAME)) {
categoryMetadataSearchResultData.setCategorySystemName(searchHitSourceMap.get(TBA_SYSTEM_NAME).toString());
}
if (searchHitSourceMap.containsKey(JCR_TITLE)) {
categoryMetadataSearchResultData.setCategoryTitle(searchHitSourceMap.get(JCR_TITLE).toString());
}
if (searchHitSourceMap.containsKey(JCR_DESCRIPTION)) {
categoryMetadataSearchResultData.setCategoryDescription(searchHitSourceMap.get(JCR_DESCRIPTION).toString());
}
Map<String, HighlightField> highlights = searchHit.getHighlightFields();
for (Map.Entry<String, HighlightField> entry : highlights.entrySet()) {
String key = entry.getKey();
Boolean includeHighlight = false;
switch(key) {
case JCR_TITLE:
key = JCR_TITLE_NEW_DESCRIPTION;
includeHighlight = true;
break;
case JCR_DESCRIPTION:
key = JCR_DESCRIPTION_NEW_DESCRIPTION;
includeHighlight = true;
break;
case TBA_SYSTEM_NAME:
key = TBA_SYSTEM_NAME_NEW_DESCRIPTION;
includeHighlight = true;
break;
}
if (includeHighlight && entry.getValue().getFragments().length >= 1) {
highlightsList.add(new Pair(key, entry.getValue().getFragments()[0].toString()));
}
}
categoryMetadataSearchResultData.setHighlights(highlightsList);
categoryMetadataSearchResultData.setRawData(searchHit.getSource());
categoriesMetadataTypeResultCount += 1L;
return categoryMetadataSearchResultData;
}
use of com.thinkbiganalytics.search.rest.model.Pair in project kylo by Teradata.
the class ElasticSearchRestSearchResultTransform method getTableSearchResultData.
private TableSearchResultData getTableSearchResultData(ElasticSearchRestSearchHit elasticSearchRestSearchHit) {
final String KYLO_SCHEMA = "kylo_schema";
final String KYLO_TABLE = "kylo_table";
final String POST_DATE = "post_date";
TableSearchResultData tableSearchResultData = new TableSearchResultData();
tableSearchResultData.setSchemaName(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(KYLO_SCHEMA, EMPTY_STRING).toString());
tableSearchResultData.setTableName(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(KYLO_TABLE, EMPTY_STRING).toString());
List<Pair> columnNamesAndValues = new ArrayList<>();
List<Pair> highlightsList = new ArrayList<>();
for (Pair sourcePairInRestSearchHit : elasticSearchRestSearchHit.getSource()) {
String key = sourcePairInRestSearchHit.getKey();
if (!((key.equals(POST_DATE)) || (key.equals(KYLO_SCHEMA)) || (key.equals(KYLO_TABLE)))) {
columnNamesAndValues.add(sourcePairInRestSearchHit);
}
}
highlightsList.addAll(elasticSearchRestSearchHit.getHighlights());
tableSearchResultData.setHighlights(highlightsList);
tableSearchResultData.setColumnNamesAndValues(columnNamesAndValues);
Map<String, Object> rawData = new HashMap<>();
rawData.put(RAW_DATA_KEY, elasticSearchRestSearchHit.getRawHit());
tableSearchResultData.setRawData(rawData);
tableDataTypeResultCount += 1L;
return tableSearchResultData;
}
use of com.thinkbiganalytics.search.rest.model.Pair in project kylo by Teradata.
the class ElasticSearchRestSearchResultTransform method getFeedMetadataSearchResultData.
private FeedMetadataSearchResultData getFeedMetadataSearchResultData(ElasticSearchRestSearchHit elasticSearchRestSearchHit) {
// jcr has no notion of null-valued property. So, account for the situation when there is no tag present.
final String TBA_SYSTEM_NAME = "tba:systemName";
final String JCR_TITLE = "jcr:title";
final String JCR_DESCRIPTION = "jcr:description";
final String TBA_CATEGORY = "tba:category";
final String TBA_TAGS = "tba:tags";
final String USR_PROPERTIES = "usr:properties";
final String META_FEED_ID = "meta:feedId";
final String TBA_SYSTEM_NAME_NEW_DESCRIPTION = "System name (Kylo)";
final String JCR_TITLE_NEW_DESCRIPTION = "Title";
final String JCR_DESCRIPTION_NEW_DESCRIPTION = "Description";
final String TBA_CATEGORY_NEW_DESCRIPTION = "Category";
final String TBA_TAGS_NEW_DESCRIPTION = "Tags";
final String USR_PROPERTIES_NEW_DESCRIPTION = "User properties";
final String META_FEED_ID_NEW_DESCRIPTION = "Feed ID";
final String SPACE_STRING = " ";
FeedMetadataSearchResultData feedMetadataSearchResultData = new FeedMetadataSearchResultData();
List<Pair> highlightsList = new ArrayList<>();
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(META_FEED_ID, EMPTY_STRING).equals(EMPTY_STRING)) {
feedMetadataSearchResultData.setFeedId(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(META_FEED_ID, EMPTY_STRING).toString());
}
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(TBA_SYSTEM_NAME, EMPTY_STRING).equals(EMPTY_STRING)) {
feedMetadataSearchResultData.setFeedSystemName(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(TBA_SYSTEM_NAME, EMPTY_STRING).toString());
}
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(JCR_TITLE, EMPTY_STRING).equals(EMPTY_STRING)) {
feedMetadataSearchResultData.setFeedTitle(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(JCR_TITLE, EMPTY_STRING).toString());
}
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(JCR_DESCRIPTION, EMPTY_STRING).equals(EMPTY_STRING)) {
feedMetadataSearchResultData.setFeedDescription(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(JCR_DESCRIPTION, EMPTY_STRING).toString());
}
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(TBA_CATEGORY, EMPTY_STRING).equals(EMPTY_STRING)) {
feedMetadataSearchResultData.setFeedCategoryId(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(TBA_CATEGORY, EMPTY_STRING).toString());
}
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(TBA_TAGS, EMPTY_STRING).equals(EMPTY_STRING)) {
feedMetadataSearchResultData.setFeedTags(Arrays.asList(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(TBA_TAGS, EMPTY_STRING).toString().split(SPACE_STRING)));
}
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(USR_PROPERTIES, EMPTY_STRING).equals(EMPTY_STRING)) {
feedMetadataSearchResultData.setUserProperties(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(USR_PROPERTIES, EMPTY_STRING).toString());
}
for (Pair highlightPair : elasticSearchRestSearchHit.getHighlights()) {
String key = highlightPair.getKey();
Boolean includeHighlight = false;
switch(key) {
case META_FEED_ID:
key = META_FEED_ID_NEW_DESCRIPTION;
includeHighlight = true;
break;
case JCR_TITLE:
key = JCR_TITLE_NEW_DESCRIPTION;
includeHighlight = true;
break;
case JCR_DESCRIPTION:
key = JCR_DESCRIPTION_NEW_DESCRIPTION;
includeHighlight = true;
break;
case TBA_TAGS:
key = TBA_TAGS_NEW_DESCRIPTION;
includeHighlight = true;
break;
case TBA_CATEGORY:
key = TBA_CATEGORY_NEW_DESCRIPTION;
includeHighlight = true;
break;
case TBA_SYSTEM_NAME:
key = TBA_SYSTEM_NAME_NEW_DESCRIPTION;
includeHighlight = true;
break;
case USR_PROPERTIES:
key = USR_PROPERTIES_NEW_DESCRIPTION;
includeHighlight = true;
default:
break;
}
if (includeHighlight) {
if (key.equals(USR_PROPERTIES_NEW_DESCRIPTION)) {
highlightsList.add(new Pair(key, getRenderPropertySearchResultHtmlAsString(highlightPair.getValue().toString())));
} else {
highlightsList.add(new Pair(key, highlightPair.getValue()));
}
}
}
feedMetadataSearchResultData.setHighlights(highlightsList);
Map<String, Object> rawData = new HashMap<>();
rawData.put(RAW_DATA_KEY, elasticSearchRestSearchHit.getRawHit());
feedMetadataSearchResultData.setRawData(rawData);
feedsMetadataTypeResultCount += 1L;
return feedMetadataSearchResultData;
}
use of com.thinkbiganalytics.search.rest.model.Pair in project kylo by Teradata.
the class ElasticSearchRestSearchResultTransform method getCategoryMetadataSearchResultData.
private CategoryMetadataSearchResultData getCategoryMetadataSearchResultData(ElasticSearchRestSearchHit elasticSearchRestSearchHit) {
// jcr has no notion of null-valued property. So, account for the situation when there is no tag present.
final String TBA_SYSTEM_NAME = "tba:systemName";
final String JCR_TITLE = "jcr:title";
final String JCR_DESCRIPTION = "jcr:description";
final String USR_PROPERTIES = "usr:properties";
final String TBA_SYSTEM_NAME_NEW_DESCRIPTION = "System name (Kylo)";
final String JCR_TITLE_NEW_DESCRIPTION = "Title";
final String JCR_DESCRIPTION_NEW_DESCRIPTION = "Description";
final String USR_PROPERTIES_NEW_DESCRIPTION = "User properties";
CategoryMetadataSearchResultData categoryMetadataSearchResultData = new CategoryMetadataSearchResultData();
List<Pair> highlightsList = new ArrayList<>();
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(TBA_SYSTEM_NAME, EMPTY_STRING).equals(EMPTY_STRING)) {
categoryMetadataSearchResultData.setCategorySystemName(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(TBA_SYSTEM_NAME, EMPTY_STRING).toString());
}
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(JCR_TITLE, EMPTY_STRING).equals(EMPTY_STRING)) {
categoryMetadataSearchResultData.setCategoryTitle(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(JCR_TITLE, EMPTY_STRING).toString());
}
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(JCR_DESCRIPTION, EMPTY_STRING).equals(EMPTY_STRING)) {
categoryMetadataSearchResultData.setCategoryDescription(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(JCR_DESCRIPTION, EMPTY_STRING).toString());
}
if (!elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(USR_PROPERTIES, EMPTY_STRING).equals(EMPTY_STRING)) {
categoryMetadataSearchResultData.setUserProperties(elasticSearchRestSearchHit.findValueForKeyInSourceWithDefault(USR_PROPERTIES, EMPTY_STRING).toString());
}
for (Pair highlightPair : elasticSearchRestSearchHit.getHighlights()) {
String key = highlightPair.getKey();
Boolean includeHighlight = false;
switch(key) {
case JCR_TITLE:
key = JCR_TITLE_NEW_DESCRIPTION;
includeHighlight = true;
break;
case JCR_DESCRIPTION:
key = JCR_DESCRIPTION_NEW_DESCRIPTION;
includeHighlight = true;
break;
case TBA_SYSTEM_NAME:
key = TBA_SYSTEM_NAME_NEW_DESCRIPTION;
includeHighlight = true;
break;
case USR_PROPERTIES:
key = USR_PROPERTIES_NEW_DESCRIPTION;
includeHighlight = true;
default:
break;
}
if (includeHighlight) {
if (key.equals(USR_PROPERTIES_NEW_DESCRIPTION)) {
highlightsList.add(new Pair(key, getRenderPropertySearchResultHtmlAsString(highlightPair.getValue().toString())));
} else {
highlightsList.add(new Pair(key, highlightPair.getValue()));
}
}
}
categoryMetadataSearchResultData.setHighlights(highlightsList);
Map<String, Object> rawData = new HashMap<>();
rawData.put(RAW_DATA_KEY, elasticSearchRestSearchHit.getRawHit());
categoryMetadataSearchResultData.setRawData(rawData);
categoriesMetadataTypeResultCount += 1L;
return categoryMetadataSearchResultData;
}
use of com.thinkbiganalytics.search.rest.model.Pair in project kylo by Teradata.
the class SolrSearchResultTransform method getTableSearchResultData.
private TableSearchResultData getTableSearchResultData(Map<String, Object> solrDocumentFieldValueMap, QueryResponse solrResponse) {
TableSearchResultData tableSearchResultData = new TableSearchResultData();
tableSearchResultData.setSchemaName(solrDocumentFieldValueMap.get("kylo_schema").toString());
tableSearchResultData.setTableName(solrDocumentFieldValueMap.get("kylo_table").toString());
List<Pair> columnNamesAndValues = new ArrayList<>();
List<Pair> highlightsList = new ArrayList<>();
for (Map.Entry<String, Object> entry : solrDocumentFieldValueMap.entrySet()) {
String key = entry.getKey();
if (!(key.equals("kylo_collection") || key.equals("kylo_schema") || key.equals("kylo_table") || key.equals("_version_") || key.equals("id"))) {
columnNamesAndValues.add(new Pair(key, entry.getValue()));
}
}
// Only retrieve the highlights for this search result
for (Map.Entry<String, List<String>> entry : solrResponse.getHighlighting().get(solrDocumentFieldValueMap.get("id")).entrySet()) {
if (entry.getValue().size() >= 1) {
highlightsList.add(new Pair(entry.getKey(), entry.getValue().get(0)));
}
}
tableSearchResultData.setHighlights(highlightsList);
tableSearchResultData.setColumnNamesAndValues(columnNamesAndValues);
tableSearchResultData.setRawData(solrDocumentFieldValueMap);
tableDataTypeResultCount += 1L;
return tableSearchResultData;
}
Aggregations