Search in sources :

Example 1 with TopSuggestDocsCollector

use of org.apache.lucene.search.suggest.document.TopSuggestDocsCollector in project elasticsearch by elastic.

the class CompletionSuggester method innerExecute.

@Override
protected Suggest.Suggestion<? extends Suggest.Suggestion.Entry<? extends Suggest.Suggestion.Entry.Option>> innerExecute(String name, final CompletionSuggestionContext suggestionContext, final IndexSearcher searcher, CharsRefBuilder spare) throws IOException {
    if (suggestionContext.getFieldType() != null) {
        final CompletionFieldMapper.CompletionFieldType fieldType = suggestionContext.getFieldType();
        CompletionSuggestion completionSuggestion = new CompletionSuggestion(name, suggestionContext.getSize());
        spare.copyUTF8Bytes(suggestionContext.getText());
        CompletionSuggestion.Entry completionSuggestEntry = new CompletionSuggestion.Entry(new Text(spare.toString()), 0, spare.length());
        completionSuggestion.addTerm(completionSuggestEntry);
        TopSuggestDocsCollector collector = new TopDocumentsCollector(suggestionContext.getSize());
        suggest(searcher, suggestionContext.toQuery(), collector);
        int numResult = 0;
        for (TopSuggestDocs.SuggestScoreDoc suggestScoreDoc : collector.get().scoreLookupDocs()) {
            TopDocumentsCollector.SuggestDoc suggestDoc = (TopDocumentsCollector.SuggestDoc) suggestScoreDoc;
            // collect contexts
            Map<String, Set<CharSequence>> contexts = Collections.emptyMap();
            if (fieldType.hasContextMappings() && suggestDoc.getContexts().isEmpty() == false) {
                contexts = fieldType.getContextMappings().getNamedContexts(suggestDoc.getContexts());
            }
            if (numResult++ < suggestionContext.getSize()) {
                CompletionSuggestion.Entry.Option option = new CompletionSuggestion.Entry.Option(suggestDoc.doc, new Text(suggestDoc.key.toString()), suggestDoc.score, contexts);
                completionSuggestEntry.addOption(option);
            } else {
                break;
            }
        }
        return completionSuggestion;
    }
    return null;
}
Also used : Set(java.util.Set) TopSuggestDocsCollector(org.apache.lucene.search.suggest.document.TopSuggestDocsCollector) CompletionFieldMapper(org.elasticsearch.index.mapper.CompletionFieldMapper) Text(org.elasticsearch.common.text.Text) TopSuggestDocs(org.apache.lucene.search.suggest.document.TopSuggestDocs)

Aggregations

Set (java.util.Set)1 TopSuggestDocs (org.apache.lucene.search.suggest.document.TopSuggestDocs)1 TopSuggestDocsCollector (org.apache.lucene.search.suggest.document.TopSuggestDocsCollector)1 Text (org.elasticsearch.common.text.Text)1 CompletionFieldMapper (org.elasticsearch.index.mapper.CompletionFieldMapper)1