Search in sources :

Example 1 with Pair

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;
}
Also used : ArrayList(java.util.ArrayList) CategoryMetadataSearchResultData(com.thinkbiganalytics.search.rest.model.CategoryMetadataSearchResultData) HighlightField(org.elasticsearch.search.highlight.HighlightField) HashMap(java.util.HashMap) Map(java.util.Map) Pair(com.thinkbiganalytics.search.rest.model.Pair)

Example 2 with Pair

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;
}
Also used : HashMap(java.util.HashMap) TableSearchResultData(com.thinkbiganalytics.search.rest.model.TableSearchResultData) ArrayList(java.util.ArrayList) Pair(com.thinkbiganalytics.search.rest.model.Pair)

Example 3 with Pair

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;
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) FeedMetadataSearchResultData(com.thinkbiganalytics.search.rest.model.FeedMetadataSearchResultData) Pair(com.thinkbiganalytics.search.rest.model.Pair)

Example 4 with Pair

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;
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) CategoryMetadataSearchResultData(com.thinkbiganalytics.search.rest.model.CategoryMetadataSearchResultData) Pair(com.thinkbiganalytics.search.rest.model.Pair)

Example 5 with Pair

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;
}
Also used : TableSearchResultData(com.thinkbiganalytics.search.rest.model.TableSearchResultData) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) List(java.util.List) HashMap(java.util.HashMap) Map(java.util.Map) Pair(com.thinkbiganalytics.search.rest.model.Pair)

Aggregations

Pair (com.thinkbiganalytics.search.rest.model.Pair)17 ArrayList (java.util.ArrayList)12 HashMap (java.util.HashMap)11 Map (java.util.Map)7 TableSearchResultData (com.thinkbiganalytics.search.rest.model.TableSearchResultData)4 List (java.util.List)4 HiveColumn (com.thinkbiganalytics.search.rest.model.HiveColumn)3 HighlightField (org.elasticsearch.search.highlight.HighlightField)3 Test (org.junit.Test)3 CategoryMetadataSearchResultData (com.thinkbiganalytics.search.rest.model.CategoryMetadataSearchResultData)2 SchemaSearchResultData (com.thinkbiganalytics.search.rest.model.SchemaSearchResultData)2 Nonnull (javax.annotation.Nonnull)2 Lists (com.google.common.collect.Lists)1 Generex (com.mifmif.common.regex.Generex)1 AnnotatedFieldProperty (com.thinkbiganalytics.annotations.AnnotatedFieldProperty)1 AnnotationFieldNameResolver (com.thinkbiganalytics.annotations.AnnotationFieldNameResolver)1 QueryResult (com.thinkbiganalytics.discovery.schema.QueryResult)1 PropertyExpressionResolver (com.thinkbiganalytics.feedmgr.nifi.PropertyExpressionResolver)1 DeployResponseEntityVersion (com.thinkbiganalytics.feedmgr.rest.model.DeployResponseEntityVersion)1 EditFeedEntity (com.thinkbiganalytics.feedmgr.rest.model.EditFeedEntity)1