Skip to content

Commit ed457e4

Browse files
Fix analyzed wildcard query in simple_query_string when disjunctions is empty (#114264) (#114355)
This change fixes analyzed wildcard query in simple_query_string when disjunctions is empty. Closes #114185 (cherry picked from commit 6955bc1) Co-authored-by: Halil Bülent Orhon <[email protected]>
1 parent e461f86 commit ed457e4

File tree

3 files changed

+34
-0
lines changed

3 files changed

+34
-0
lines changed

docs/changelog/114264.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 114264
2+
summary: "Fix analyzed wildcard query in simple_query_string when disjunctions is empty"
3+
area: Search
4+
type: bug
5+
issues: [114185]

server/src/internalClusterTest/java/org/elasticsearch/search/query/SimpleQueryStringIT.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,32 @@ public void testFieldAliasOnDisallowedFieldType() throws Exception {
581581
});
582582
}
583583

584+
public void testSimpleQueryStringWithAnalysisStopWords() throws Exception {
585+
String mapping = Strings.toString(
586+
XContentFactory.jsonBuilder()
587+
.startObject()
588+
.startObject("properties")
589+
.startObject("body")
590+
.field("type", "text")
591+
.field("analyzer", "stop")
592+
.endObject()
593+
.endObject()
594+
.endObject()
595+
);
596+
597+
CreateIndexRequestBuilder mappingRequest = indicesAdmin().prepareCreate("test1").setMapping(mapping);
598+
mappingRequest.get();
599+
indexRandom(true, prepareIndex("test1").setId("1").setSource("body", "Some Text"));
600+
refresh();
601+
602+
assertHitCount(
603+
prepareSearch().setQuery(
604+
simpleQueryStringQuery("the* text*").analyzeWildcard(true).defaultOperator(Operator.AND).field("body")
605+
),
606+
1
607+
);
608+
}
609+
584610
private void assertHits(SearchHits hits, String... ids) {
585611
assertThat(hits.getTotalHits().value, equalTo((long) ids.length));
586612
Set<String> hitIds = new HashSet<>();

server/src/main/java/org/elasticsearch/index/search/SimpleQueryStringQueryParser.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,9 @@ public Query newPrefixQuery(String text) {
198198
if (disjuncts.size() == 1) {
199199
return disjuncts.get(0);
200200
}
201+
if (disjuncts.size() == 0) {
202+
return null;
203+
}
201204
return new DisjunctionMaxQuery(disjuncts, 1.0f);
202205
}
203206

0 commit comments

Comments
 (0)