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

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

Introduction

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

Prototype

public List<LookupResult> getLookupResult(String suggesterName, String token) 

Source Link

Document

Get a list of lookup result for a given token null can be returned, if there are no lookup results for the token

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//from   ww w  .  jav  a  2 s  . 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);

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