Remove PROTOTYPE from RescorerBuilders
This changes the serialization order for QueryRescorerBuilder's but that is ok because 5.0.0 doesn't need to be wire compatible with anything.
This commit is contained in:
parent
5e8656aff0
commit
584ba6133d
|
@ -286,6 +286,7 @@ public class SearchModule extends AbstractModule {
|
|||
|
||||
registerBuiltinFunctionScoreParsers();
|
||||
registerBuiltinQueryParsers();
|
||||
registerBuiltinRescorers();
|
||||
}
|
||||
|
||||
public void registerHighlighter(String key, Class<? extends Highlighter> clazz) {
|
||||
|
@ -350,7 +351,6 @@ public class SearchModule extends AbstractModule {
|
|||
configureSuggesters();
|
||||
configureFetchSubPhase();
|
||||
configureShapes();
|
||||
configureRescorers();
|
||||
configureSorts();
|
||||
}
|
||||
|
||||
|
@ -491,8 +491,8 @@ public class SearchModule extends AbstractModule {
|
|||
}
|
||||
}
|
||||
|
||||
private void configureRescorers() {
|
||||
namedWriteableRegistry.registerPrototype(RescoreBuilder.class, QueryRescorerBuilder.PROTOTYPE);
|
||||
private void registerBuiltinRescorers() {
|
||||
namedWriteableRegistry.register(RescoreBuilder.class, QueryRescorerBuilder.NAME, QueryRescorerBuilder::new);
|
||||
}
|
||||
|
||||
private void configureSorts() {
|
||||
|
|
|
@ -85,10 +85,7 @@ public enum QueryRescoreMode implements Writeable<QueryRescoreMode> {
|
|||
|
||||
public abstract float combine(float primary, float secondary);
|
||||
|
||||
static QueryRescoreMode PROTOTYPE = Total;
|
||||
|
||||
@Override
|
||||
public QueryRescoreMode readFrom(StreamInput in) throws IOException {
|
||||
public static QueryRescoreMode readFromStream(StreamInput in) throws IOException {
|
||||
int ordinal = in.readVInt();
|
||||
if (ordinal < 0 || ordinal >= values().length) {
|
||||
throw new IOException("Unknown ScoreMode ordinal [" + ordinal + "]");
|
||||
|
|
|
@ -25,7 +25,6 @@ import org.elasticsearch.common.io.stream.StreamInput;
|
|||
import org.elasticsearch.common.io.stream.StreamOutput;
|
||||
import org.elasticsearch.common.xcontent.ObjectParser;
|
||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||
import org.elasticsearch.index.query.MatchAllQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryParseContext;
|
||||
import org.elasticsearch.index.query.QueryShardContext;
|
||||
|
@ -39,8 +38,6 @@ public class QueryRescorerBuilder extends RescoreBuilder<QueryRescorerBuilder> {
|
|||
|
||||
public static final String NAME = "query";
|
||||
|
||||
public static final QueryRescorerBuilder PROTOTYPE = new QueryRescorerBuilder(new MatchAllQueryBuilder());
|
||||
|
||||
public static final float DEFAULT_RESCORE_QUERYWEIGHT = 1.0f;
|
||||
public static final float DEFAULT_QUERYWEIGHT = 1.0f;
|
||||
public static final QueryRescoreMode DEFAULT_SCORE_MODE = QueryRescoreMode.Total;
|
||||
|
@ -77,6 +74,25 @@ public class QueryRescorerBuilder extends RescoreBuilder<QueryRescorerBuilder> {
|
|||
this.queryBuilder = builder;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read from a stream.
|
||||
*/
|
||||
public QueryRescorerBuilder(StreamInput in) throws IOException {
|
||||
super(in);
|
||||
queryBuilder = in.readQuery();
|
||||
scoreMode = QueryRescoreMode.readFromStream(in);
|
||||
rescoreQueryWeight = in.readFloat();
|
||||
queryWeight = in.readFloat();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doWriteTo(StreamOutput out) throws IOException {
|
||||
out.writeQuery(queryBuilder);
|
||||
scoreMode.writeTo(out);
|
||||
out.writeFloat(rescoreQueryWeight);
|
||||
out.writeFloat(queryWeight);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the query used for this rescore query
|
||||
*/
|
||||
|
@ -140,9 +156,9 @@ public class QueryRescorerBuilder extends RescoreBuilder<QueryRescorerBuilder> {
|
|||
builder.endObject();
|
||||
}
|
||||
|
||||
public QueryRescorerBuilder fromXContent(QueryParseContext parseContext) throws IOException {
|
||||
InnerBuilder innerBuilder = QUERY_RESCORE_PARSER.parse(parseContext.parser(), new InnerBuilder(), parseContext);
|
||||
return innerBuilder.build();
|
||||
public static QueryRescorerBuilder fromXContent(QueryParseContext parseContext) throws IOException {
|
||||
InnerBuilder innerBuilder = QUERY_RESCORE_PARSER.parse(parseContext.parser(), new InnerBuilder(), parseContext);
|
||||
return innerBuilder.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -181,23 +197,6 @@ public class QueryRescorerBuilder extends RescoreBuilder<QueryRescorerBuilder> {
|
|||
Objects.equals(queryBuilder, other.queryBuilder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryRescorerBuilder doReadFrom(StreamInput in) throws IOException {
|
||||
QueryRescorerBuilder rescorer = new QueryRescorerBuilder(in.readQuery());
|
||||
rescorer.setScoreMode(QueryRescoreMode.PROTOTYPE.readFrom(in));
|
||||
rescorer.setRescoreQueryWeight(in.readFloat());
|
||||
rescorer.setQueryWeight(in.readFloat());
|
||||
return rescorer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doWriteTo(StreamOutput out) throws IOException {
|
||||
out.writeQuery(queryBuilder);
|
||||
scoreMode.writeTo(out);
|
||||
out.writeFloat(rescoreQueryWeight);
|
||||
out.writeFloat(queryWeight);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getWriteableName() {
|
||||
return NAME;
|
||||
|
@ -208,7 +207,7 @@ public class QueryRescorerBuilder extends RescoreBuilder<QueryRescorerBuilder> {
|
|||
* for the constructor of {@link QueryRescorerBuilder}, but {@link ObjectParser} only
|
||||
* allows filling properties of an already constructed value.
|
||||
*/
|
||||
private class InnerBuilder {
|
||||
private static class InnerBuilder {
|
||||
|
||||
private QueryBuilder<?> queryBuilder;
|
||||
private float rescoreQueryWeight = DEFAULT_RESCORE_QUERYWEIGHT;
|
||||
|
|
|
@ -46,6 +46,27 @@ public abstract class RescoreBuilder<RB extends RescoreBuilder<RB>> implements T
|
|||
|
||||
private static ParseField WINDOW_SIZE_FIELD = new ParseField("window_size");
|
||||
|
||||
/**
|
||||
* Construct an empty RescoreBuilder.
|
||||
*/
|
||||
public RescoreBuilder() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Read from a stream.
|
||||
*/
|
||||
protected RescoreBuilder(StreamInput in) throws IOException {
|
||||
windowSize = in.readOptionalVInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void writeTo(StreamOutput out) throws IOException {
|
||||
out.writeOptionalVInt(this.windowSize);
|
||||
doWriteTo(out);
|
||||
}
|
||||
|
||||
protected abstract void doWriteTo(StreamOutput out) throws IOException;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public RB windowSize(int windowSize) {
|
||||
this.windowSize = windowSize;
|
||||
|
@ -74,7 +95,7 @@ public abstract class RescoreBuilder<RB extends RescoreBuilder<RB>> implements T
|
|||
} else if (token == XContentParser.Token.START_OBJECT) {
|
||||
// we only have QueryRescorer at this point
|
||||
if (QueryRescorerBuilder.NAME.equals(fieldName)) {
|
||||
rescorer = QueryRescorerBuilder.PROTOTYPE.fromXContent(parseContext);
|
||||
rescorer = QueryRescorerBuilder.fromXContent(parseContext);
|
||||
} else {
|
||||
throw new ParsingException(parser.getTokenLocation(), "rescore doesn't support rescorer with name [" + fieldName + "]");
|
||||
}
|
||||
|
@ -128,23 +149,6 @@ public abstract class RescoreBuilder<RB extends RescoreBuilder<RB>> implements T
|
|||
return Objects.equals(windowSize, other.windowSize);
|
||||
}
|
||||
|
||||
@Override
|
||||
public RB readFrom(StreamInput in) throws IOException {
|
||||
RB builder = doReadFrom(in);
|
||||
builder.windowSize = in.readOptionalVInt();
|
||||
return builder;
|
||||
}
|
||||
|
||||
protected abstract RB doReadFrom(StreamInput in) throws IOException;
|
||||
|
||||
@Override
|
||||
public void writeTo(StreamOutput out) throws IOException {
|
||||
doWriteTo(out);
|
||||
out.writeOptionalVInt(this.windowSize);
|
||||
}
|
||||
|
||||
protected abstract void doWriteTo(StreamOutput out) throws IOException;
|
||||
|
||||
@Override
|
||||
public final String toString() {
|
||||
try {
|
||||
|
|
|
@ -69,7 +69,6 @@ public class QueryRescoreBuilderTests extends ESTestCase {
|
|||
@BeforeClass
|
||||
public static void init() {
|
||||
namedWriteableRegistry = new NamedWriteableRegistry();
|
||||
namedWriteableRegistry.registerPrototype(RescoreBuilder.class, QueryRescorerBuilder.PROTOTYPE);
|
||||
indicesQueriesRegistry = new SearchModule(Settings.EMPTY, namedWriteableRegistry).buildQueryParserRegistry();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue