Skip to content

Commit

Permalink
More Like This API: remove unused search_query_hint parameter
Browse files Browse the repository at this point in the history
Closes #7691
  • Loading branch information
javanna committed Sep 11, 2014
1 parent 8d05685 commit d67834a
Show file tree
Hide file tree
Showing 4 changed files with 172 additions and 27 deletions.
4 changes: 0 additions & 4 deletions rest-api-spec/api/mlt.json
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,6 @@
"type" : "list",
"description" : "A comma-separated list of indices to perform the query against (default: the index containing the document)"
},
"search_query_hint": {
"type" : "string",
"description" : "The search query hint"
},
"search_scroll": {
"type" : "string",
"description" : "A scroll search request definition"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ public class MoreLikeThisRequest extends ActionRequest<MoreLikeThisRequest> impl
private SearchType searchType = SearchType.DEFAULT;
private int searchSize = 0;
private int searchFrom = 0;
private String searchQueryHint;
private String[] searchIndices;
private String[] searchTypes;
private Scroll searchScroll;
Expand Down Expand Up @@ -506,21 +505,6 @@ public String[] searchTypes() {
return this.searchTypes;
}

/**
* Optional search query hint.
*/
public MoreLikeThisRequest searchQueryHint(String searchQueryHint) {
this.searchQueryHint = searchQueryHint;
return this;
}

/**
* Optional search query hint.
*/
public String searchQueryHint() {
return this.searchQueryHint;
}

/**
* An optional search scroll request to be able to continue and scroll the search
* operation.
Expand Down Expand Up @@ -616,8 +600,11 @@ public void readFrom(StreamInput in) throws IOException {
}

searchType = SearchType.fromId(in.readByte());
if (in.readBoolean()) {
searchQueryHint = in.readString();
if (in.getVersion().before(Version.V_1_4_0)) {
//searchQueryHint was unused and removed in 1.4
if (in.readBoolean()) {
in.readString();
}
}
size = in.readVInt();
if (size == 0) {
Expand Down Expand Up @@ -689,11 +676,9 @@ public void writeTo(StreamOutput out) throws IOException {
}

out.writeByte(searchType.id());
if (searchQueryHint == null) {
if (out.getVersion().before(Version.V_1_4_0)) {
//searchQueryHint was unused and removed in 1.4
out.writeBoolean(false);
} else {
out.writeBoolean(true);
out.writeString(searchQueryHint);
}
if (searchIndices == null) {
out.writeVInt(0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ public void handleRequest(final RestRequest request, final RestChannel channel,
mltRequest.searchType(SearchType.fromString(request.param("search_type")));
mltRequest.searchIndices(request.paramAsStringArray("search_indices", null));
mltRequest.searchTypes(request.paramAsStringArray("search_types", null));
mltRequest.searchQueryHint(request.param("search_query_hint"));
mltRequest.searchSize(request.paramAsInt("search_size", mltRequest.searchSize()));
mltRequest.searchFrom(request.paramAsInt("search_from", mltRequest.searchFrom()));
String searchScroll = request.param("search_scroll");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
/*
* Licensed to Elasticsearch under one or more contributor
* license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright
* ownership. Elasticsearch licenses this file to you under
* the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/

package org.elasticsearch.action.mlt;

import org.elasticsearch.Version;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.common.Strings;
import org.elasticsearch.common.io.stream.BytesStreamInput;
import org.elasticsearch.common.io.stream.BytesStreamOutput;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.Scroll;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.test.ElasticsearchTestCase;
import org.junit.Test;

import java.io.IOException;

import static org.hamcrest.CoreMatchers.*;

public class MoreLikeThisRequestTests extends ElasticsearchTestCase {

@Test
public void testSerialization() throws IOException {

MoreLikeThisRequest mltRequest = new MoreLikeThisRequest(randomAsciiOfLength(randomIntBetween(1, 20)))
.id(randomAsciiOfLength(randomIntBetween(1, 20))).type(randomAsciiOfLength(randomIntBetween(1, 20)));

if (randomBoolean()) {
mltRequest.boostTerms(randomFloat());
}
if (randomBoolean()) {
mltRequest.maxDocFreq(randomInt());
}
if (randomBoolean()) {
mltRequest.minDocFreq(randomInt());
}
if (randomBoolean()) {
mltRequest.maxQueryTerms(randomInt());
}
if (randomBoolean()) {
mltRequest.minWordLength(randomInt());
}
if (randomBoolean()) {
mltRequest.maxWordLength(randomInt());
}
if (randomBoolean()) {
mltRequest.percentTermsToMatch(randomFloat());
}
if (randomBoolean()) {
mltRequest.searchTypes(randomStrings(5));
}
if (randomBoolean()) {
mltRequest.searchType(randomFrom(SearchType.values()));
}
if (randomBoolean()) {
mltRequest.searchIndices(randomStrings(5));
}
if (randomBoolean()) {
mltRequest.routing(randomAsciiOfLength(randomIntBetween(1, 20)));
}
if (randomBoolean()) {
mltRequest.searchFrom(randomInt());
}
if (randomBoolean()) {
mltRequest.searchSize(randomInt());
}
if (randomBoolean()) {
mltRequest.searchScroll(new Scroll(TimeValue.timeValueNanos(randomLong())));
}
if (randomBoolean()) {
mltRequest.searchSource(SearchSourceBuilder.searchSource().query(QueryBuilders.termQuery("term", "value")));
}
if(randomBoolean()) {
mltRequest.include(randomBoolean());
}
if (randomBoolean()) {
mltRequest.stopWords(randomStrings(10));
}
if (randomBoolean()) {
mltRequest.fields(randomStrings(5));
}

BytesStreamOutput out = new BytesStreamOutput();
out.setVersion(randomVersion());
mltRequest.writeTo(out);

BytesStreamInput in = new BytesStreamInput(out.bytes());
in.setVersion(out.getVersion());
MoreLikeThisRequest mltRequest2 = new MoreLikeThisRequest();
mltRequest2.readFrom(in);

assertThat(mltRequest2.index(), equalTo(mltRequest.index()));
assertThat(mltRequest2.type(), equalTo(mltRequest.type()));
assertThat(mltRequest2.id(), equalTo(mltRequest.id()));
assertThat(mltRequest2.boostTerms(), equalTo(mltRequest.boostTerms()));
assertThat(mltRequest2.maxDocFreq(), equalTo(mltRequest.maxDocFreq()));
assertThat(mltRequest2.minDocFreq(), equalTo(mltRequest.minDocFreq()));
assertThat(mltRequest2.maxQueryTerms(), equalTo(mltRequest.maxQueryTerms()));
assertThat(mltRequest2.minWordLength(), equalTo(mltRequest.minWordLength()));
assertThat(mltRequest2.maxWordLength(), equalTo(mltRequest.maxWordLength()));
assertThat(mltRequest2.percentTermsToMatch(), equalTo(mltRequest.percentTermsToMatch()));
assertThat(mltRequest2.searchTypes(), equalTo(mltRequest.searchTypes()));
assertThat(mltRequest2.searchType(), equalTo(mltRequest.searchType()));
assertThat(mltRequest2.searchIndices(), equalTo(mltRequest.searchIndices()));
assertThat(mltRequest2.routing(), equalTo(mltRequest.routing()));
assertThat(mltRequest2.searchFrom(), equalTo(mltRequest.searchFrom()));
assertThat(mltRequest2.searchSize(), equalTo(mltRequest.searchSize()));
if (mltRequest.searchScroll() == null) {
assertThat(mltRequest2.searchScroll(), nullValue());
} else {
assertThat(mltRequest2.searchFrom(), notNullValue());
assertThat(mltRequest2.searchScroll().keepAlive(), equalTo(mltRequest.searchScroll().keepAlive()));
}

if (mltRequest.searchSource() == null) {
assertThat(mltRequest2.searchSource().length(), equalTo(0));
} else {
assertThat(mltRequest2.searchSource().length(), equalTo(mltRequest.searchSource().length()));
assertThat(mltRequest2.searchSourceUnsafe(), equalTo(mltRequest.searchSourceUnsafe()));
}

if (mltRequest.stopWords() != null && mltRequest.stopWords().length > 0) {
assertThat(mltRequest2.stopWords(), equalTo(mltRequest.stopWords()));
} else {
assertThat(mltRequest2.stopWords(), nullValue());
}
if (mltRequest.fields() == null) {
assertThat(mltRequest2.fields(), equalTo(Strings.EMPTY_ARRAY));
} else {
assertThat(mltRequest2.fields(), equalTo(mltRequest.fields()));
}
if (out.getVersion().onOrAfter(Version.V_1_2_0)) {
assertThat(mltRequest2.include(), equalTo(mltRequest.include()));
} else {
assertThat(mltRequest2.include(), is(false));
}
}

private static String[] randomStrings(int max) {
int count = randomIntBetween(0, max);
String[] strings = new String[count];
for (int i = 0; i < strings.length; i++) {
strings[i] = randomAsciiOfLength(randomIntBetween(1, 20));
}
return strings;
}
}

0 comments on commit d67834a

Please sign in to comment.