Example usage for org.apache.solr.spelling.suggest SuggesterResult getSuggesterNames

List of usage examples for org.apache.solr.spelling.suggest SuggesterResult getSuggesterNames

Introduction

In this page you can find the example usage for org.apache.solr.spelling.suggest SuggesterResult getSuggesterNames.

Prototype

public Set<String> getSuggesterNames() 

Source Link

Document

Get the set of suggesterNames for which this instance holds results

Usage

From source file:org.alfresco.solr.component.AsyncBuildSuggestComponent.java

License:Open Source License

/** 
 * Given a list of {@link SuggesterResult} and <code>count</code>
 * returns a {@link SuggesterResult} containing <code>count</code>
 * number of {@link LookupResult}, sorted by their associated 
 * weights/* w w w  .java2s . c  o  m*/
 * */
private static SuggesterResult merge(List<SuggesterResult> suggesterResults, int count) {
    SuggesterResult result = new SuggesterResult();
    Set<String> allTokens = new HashSet<>();
    Set<String> suggesterNames = new HashSet<>();

    // collect all tokens
    for (SuggesterResult shardResult : suggesterResults) {
        for (String suggesterName : shardResult.getSuggesterNames()) {
            allTokens.addAll(shardResult.getTokens(suggesterName));
            suggesterNames.add(suggesterName);
        }
    }

    // Get Top N for every token in every shard (using weights)
    for (String suggesterName : suggesterNames) {
        for (String token : allTokens) {
            Lookup.LookupPriorityQueue resultQueue = new Lookup.LookupPriorityQueue(count);
            for (SuggesterResult shardResult : suggesterResults) {
                List<LookupResult> suggests = shardResult.getLookupResult(suggesterName, token);
                if (suggests == null) {
                    continue;
                }
                for (LookupResult res : suggests) {
                    resultQueue.insertWithOverflow(res);
                }
            }
            List<LookupResult> sortedSuggests = new LinkedList<>();
            Collections.addAll(sortedSuggests, resultQueue.getResults());
            result.add(suggesterName, token, sortedSuggests);
        }
    }
    return result;
}

From source file:org.alfresco.solr.component.AsyncBuildSuggestComponent.java

License:Open Source License

/** Convert {@link SuggesterResult} to NamedList for constructing responses */
private void toNamedList(SuggesterResult suggesterResult,
        Map<String, SimpleOrderedMap<NamedList<Object>>> resultObj) {
    for (String suggesterName : suggesterResult.getSuggesterNames()) {
        SimpleOrderedMap<NamedList<Object>> results = new SimpleOrderedMap<>();
        for (String token : suggesterResult.getTokens(suggesterName)) {
            SimpleOrderedMap<Object> suggestionBody = new SimpleOrderedMap<>();
            List<LookupResult> lookupResults = suggesterResult.getLookupResult(suggesterName, token);
            suggestionBody.add(SuggesterResultLabels.SUGGESTION_NUM_FOUND, lookupResults.size());
            List<SimpleOrderedMap<Object>> suggestEntriesNamedList = new ArrayList<>();
            for (LookupResult lookupResult : lookupResults) {
                String suggestionString = lookupResult.key.toString();
                long weight = lookupResult.value;
                String payload = (lookupResult.payload != null) ? lookupResult.payload.utf8ToString() : "";

                SimpleOrderedMap<Object> suggestEntryNamedList = new SimpleOrderedMap<>();
                suggestEntryNamedList.add(SuggesterResultLabels.SUGGESTION_TERM, suggestionString);
                suggestEntryNamedList.add(SuggesterResultLabels.SUGGESTION_WEIGHT, weight);
                suggestEntryNamedList.add(SuggesterResultLabels.SUGGESTION_PAYLOAD, payload);
                suggestEntriesNamedList.add(suggestEntryNamedList);

            }/*ww  w  . ja v  a 2s .c o  m*/
            suggestionBody.add(SuggesterResultLabels.SUGGESTIONS, suggestEntriesNamedList);
            results.add(token, suggestionBody);
        }
        resultObj.put(suggesterName, results);
    }
}