当前位置: 首页>>代码示例>>Java>>正文


Java SearchContext.rescore方法代码示例

本文整理汇总了Java中org.elasticsearch.search.internal.SearchContext.rescore方法的典型用法代码示例。如果您正苦于以下问题:Java SearchContext.rescore方法的具体用法?Java SearchContext.rescore怎么用?Java SearchContext.rescore使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.elasticsearch.search.internal.SearchContext的用法示例。


在下文中一共展示了SearchContext.rescore方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: hitExecute

import org.elasticsearch.search.internal.SearchContext; //导入方法依赖的package包/类
@Override
public void hitExecute(SearchContext context, HitContext hitContext) {
    if (context.explain() == false) {
        return;
    }
    try {
        final int topLevelDocId = hitContext.hit().docId();
        Explanation explanation = context.searcher().explain(context.query(), topLevelDocId);

        for (RescoreSearchContext rescore : context.rescore()) {
            explanation = rescore.rescorer().explain(topLevelDocId, context, rescore, explanation);
        }
        // we use the top level doc id, since we work with the top level searcher
        hitContext.hit().explanation(explanation);
    } catch (IOException e) {
        throw new FetchPhaseExecutionException(context, "Failed to explain doc [" + hitContext.hit().getType() + "#"
                + hitContext.hit().getId() + "]", e);
    } finally {
        context.clearReleasables(SearchContext.Lifetime.COLLECTION);
    }
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:22,代码来源:ExplainFetchSubPhase.java

示例2: hitExecute

import org.elasticsearch.search.internal.SearchContext; //导入方法依赖的package包/类
@Override
public void hitExecute(SearchContext context, HitContext hitContext) {
    try {
        final int topLevelDocId = hitContext.hit().docId();
        Explanation explanation = context.searcher().explain(context.query(), topLevelDocId);
        
        for (RescoreSearchContext rescore : context.rescore()) {
            explanation = rescore.rescorer().explain(topLevelDocId, context, rescore, explanation);
        }
        // we use the top level doc id, since we work with the top level searcher
        hitContext.hit().explanation(explanation);
    } catch (IOException e) {
        throw new FetchPhaseExecutionException(context, "Failed to explain doc [" + hitContext.hit().type() + "#" + hitContext.hit().id() + "]", e);
    } finally {
        context.clearReleasables(SearchContext.Lifetime.COLLECTION);
    }
}
 
开发者ID:baidu,项目名称:Elasticsearch,代码行数:18,代码来源:ExplainFetchSubPhase.java

示例3: execute

import org.elasticsearch.search.internal.SearchContext; //导入方法依赖的package包/类
@Override
public void execute(SearchContext context) {
    try {
        TopDocs topDocs = context.queryResult().topDocs();
        for (RescoreSearchContext ctx : context.rescore()) {
            topDocs = ctx.rescorer().rescore(topDocs, context, ctx);
        }
        context.queryResult().topDocs(topDocs, context.queryResult().sortValueFormats());
    } catch (IOException e) {
        throw new ElasticsearchException("Rescore Phase Failed", e);
    }
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:13,代码来源:RescorePhase.java

示例4: build

import org.elasticsearch.search.internal.SearchContext; //导入方法依赖的package包/类
public CollapseContext build(SearchContext context) {
    if (context.scrollContext() != null) {
        throw new SearchContextException(context, "cannot use `collapse` in a scroll context");
    }
    if (context.searchAfter() != null) {
        throw new SearchContextException(context, "cannot use `collapse` in conjunction with `search_after`");
    }
    if (context.rescore() != null && context.rescore().isEmpty() == false) {
        throw new SearchContextException(context, "cannot use `collapse` in conjunction with `rescore`");
    }

    MappedFieldType fieldType = context.getQueryShardContext().fieldMapper(field);
    if (fieldType == null) {
        throw new SearchContextException(context, "no mapping found for `" + field + "` in order to collapse on");
    }
    if (fieldType instanceof KeywordFieldMapper.KeywordFieldType == false &&
        fieldType instanceof NumberFieldMapper.NumberFieldType == false) {
        throw new SearchContextException(context, "unknown type for collapse field `" + field +
            "`, only keywords and numbers are accepted");
    }

    if (fieldType.hasDocValues() == false) {
        throw new SearchContextException(context, "cannot collapse on field `" + field + "` without `doc_values`");
    }
    if (fieldType.indexOptions() == IndexOptions.NONE && innerHit != null) {
        throw new SearchContextException(context, "cannot expand `inner_hits` for collapse field `"
            + field + "`, " + "only indexed field can retrieve `inner_hits`");
    }
    return new CollapseContext(fieldType, innerHit);
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:31,代码来源:CollapseBuilder.java

示例5: shardOperation

import org.elasticsearch.search.internal.SearchContext; //导入方法依赖的package包/类
@Override
protected ExplainResponse shardOperation(ExplainRequest request, ShardId shardId) throws IOException {
    ShardSearchLocalRequest shardSearchLocalRequest = new ShardSearchLocalRequest(shardId,
        new String[]{request.type()}, request.nowInMillis, request.filteringAlias());
    SearchContext context = searchService.createSearchContext(shardSearchLocalRequest, SearchService.NO_TIMEOUT, null);
    Term uidTerm = new Term(UidFieldMapper.NAME, Uid.createUidAsBytes(request.type(), request.id()));
    Engine.GetResult result = null;
    try {
        result = context.indexShard().get(new Engine.Get(false, uidTerm));
        if (!result.exists()) {
            return new ExplainResponse(shardId.getIndexName(), request.type(), request.id(), false);
        }
        context.parsedQuery(context.getQueryShardContext().toQuery(request.query()));
        context.preProcess(true);
        int topLevelDocId = result.docIdAndVersion().docId + result.docIdAndVersion().context.docBase;
        Explanation explanation = context.searcher().explain(context.query(), topLevelDocId);
        for (RescoreSearchContext ctx : context.rescore()) {
            Rescorer rescorer = ctx.rescorer();
            explanation = rescorer.explain(topLevelDocId, context, ctx, explanation);
        }
        if (request.storedFields() != null || (request.fetchSourceContext() != null && request.fetchSourceContext().fetchSource())) {
            // Advantage is that we're not opening a second searcher to retrieve the _source. Also
            // because we are working in the same searcher in engineGetResult we can be sure that a
            // doc isn't deleted between the initial get and this call.
            GetResult getResult = context.indexShard().getService().get(result, request.id(), request.type(), request.storedFields(), request.fetchSourceContext());
            return new ExplainResponse(shardId.getIndexName(), request.type(), request.id(), true, explanation, getResult);
        } else {
            return new ExplainResponse(shardId.getIndexName(), request.type(), request.id(), true, explanation);
        }
    } catch (IOException e) {
        throw new ElasticsearchException("Could not explain", e);
    } finally {
        Releasables.close(result, context);
    }
}
 
开发者ID:justor,项目名称:elasticsearch_my,代码行数:36,代码来源:TransportExplainAction.java

示例6: execute

import org.elasticsearch.search.internal.SearchContext; //导入方法依赖的package包/类
@Override
public void execute(SearchContext context) {
    try {
        TopDocs topDocs = context.queryResult().topDocs();
        for (RescoreSearchContext ctx : context.rescore()) {
            topDocs = ctx.rescorer().rescore(topDocs, context, ctx);
        }
        context.queryResult().topDocs(topDocs);
    } catch (IOException e) {
        throw new ElasticsearchException("Rescore Phase Failed", e);
    }
}
 
开发者ID:baidu,项目名称:Elasticsearch,代码行数:13,代码来源:RescorePhase.java

示例7: shardOperation

import org.elasticsearch.search.internal.SearchContext; //导入方法依赖的package包/类
@Override
protected ExplainResponse shardOperation(ExplainRequest request, ShardId shardId) {
    IndexService indexService = indicesService.indexServiceSafe(shardId.getIndex());
    IndexShard indexShard = indexService.shardSafe(shardId.id());
    Term uidTerm = new Term(UidFieldMapper.NAME, Uid.createUidAsBytes(request.type(), request.id()));
    Engine.GetResult result = indexShard.get(new Engine.Get(false, uidTerm));
    if (!result.exists()) {
        return new ExplainResponse(shardId.getIndex(), request.type(), request.id(), false);
    }

    SearchContext context = new DefaultSearchContext(
            0, new ShardSearchLocalRequest(new String[]{request.type()}, request.nowInMillis, request.filteringAlias()),
            null, result.searcher(), indexService, indexShard,
            scriptService, pageCacheRecycler,
            bigArrays, threadPool.estimatedTimeInMillisCounter(), parseFieldMatcher,
            SearchService.NO_TIMEOUT
    );
    SearchContext.setCurrent(context);

    try {
        context.parsedQuery(indexService.queryParserService().parseQuery(request.source()));
        context.preProcess();
        int topLevelDocId = result.docIdAndVersion().docId + result.docIdAndVersion().context.docBase;
        Explanation explanation = context.searcher().explain(context.query(), topLevelDocId);
        for (RescoreSearchContext ctx : context.rescore()) {
            Rescorer rescorer = ctx.rescorer();
            explanation = rescorer.explain(topLevelDocId, context, ctx, explanation);
        }
        if (request.fields() != null || (request.fetchSourceContext() != null && request.fetchSourceContext().fetchSource())) {
            // Advantage is that we're not opening a second searcher to retrieve the _source. Also
            // because we are working in the same searcher in engineGetResult we can be sure that a
            // doc isn't deleted between the initial get and this call.
            GetResult getResult = indexShard.getService().get(result, request.id(), request.type(), request.fields(), request.fetchSourceContext(), false);
            return new ExplainResponse(shardId.getIndex(), request.type(), request.id(), true, explanation, getResult);
        } else {
            return new ExplainResponse(shardId.getIndex(), request.type(), request.id(), true, explanation);
        }
    } catch (IOException e) {
        throw new ElasticsearchException("Could not explain", e);
    } finally {
        context.close();
        SearchContext.removeCurrent();
    }
}
 
开发者ID:baidu,项目名称:Elasticsearch,代码行数:45,代码来源:TransportExplainAction.java


注:本文中的org.elasticsearch.search.internal.SearchContext.rescore方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。