From 1b201d04d7de2e2de90875ef729877c9b98af129 Mon Sep 17 00:00:00 2001 From: Mike McCandless Date: Thu, 21 Dec 2017 13:57:24 -0500 Subject: [PATCH] LUCENE-8094: improve TermInSetQuery.toString --- lucene/CHANGES.txt | 2 ++ .../src/java/org/apache/lucene/search/TermInSetQuery.java | 8 ++++++-- .../test/org/apache/lucene/search/TermInSetQueryTest.java | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index f6a3cc73640..0da2cfe01d8 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -97,6 +97,8 @@ Improvements * LUCENE-8093: TrimFilterFactory implements MultiTermAwareComponent (Alan Woodward) +* LUCENE-8094: TermInSetQuery.toString now returns "field:(A B C)" (Mike McCandless) + Bug Fixes * LUCENE-8077: Fixed bug in how CheckIndex verifies doc-value iterators. diff --git a/lucene/core/src/java/org/apache/lucene/search/TermInSetQuery.java b/lucene/core/src/java/org/apache/lucene/search/TermInSetQuery.java index 95f65648903..4049e1052c4 100644 --- a/lucene/core/src/java/org/apache/lucene/search/TermInSetQuery.java +++ b/lucene/core/src/java/org/apache/lucene/search/TermInSetQuery.java @@ -148,15 +148,19 @@ public class TermInSetQuery extends Query implements Accountable { @Override public String toString(String defaultField) { StringBuilder builder = new StringBuilder(); - boolean first = true; + builder.append(field); + builder.append(":("); + TermIterator iterator = termData.iterator(); + boolean first = true; for (BytesRef term = iterator.next(); term != null; term = iterator.next()) { if (!first) { builder.append(' '); } first = false; - builder.append(new Term(iterator.field(), term).toString()); + builder.append(Term.toString(term)); } + builder.append(')'); return builder.toString(); } diff --git a/lucene/core/src/test/org/apache/lucene/search/TermInSetQueryTest.java b/lucene/core/src/test/org/apache/lucene/search/TermInSetQueryTest.java index e0154ab8ecd..ee14c3b08f9 100644 --- a/lucene/core/src/test/org/apache/lucene/search/TermInSetQueryTest.java +++ b/lucene/core/src/test/org/apache/lucene/search/TermInSetQueryTest.java @@ -157,7 +157,7 @@ public class TermInSetQueryTest extends LuceneTestCase { public void testToString() { TermInSetQuery termsQuery = new TermInSetQuery("field1", new BytesRef("a"), new BytesRef("b"), new BytesRef("c")); - assertEquals("field1:a field1:b field1:c", termsQuery.toString()); + assertEquals("field1:(a b c)", termsQuery.toString()); } public void testDedup() { @@ -285,7 +285,7 @@ public class TermInSetQueryTest extends LuceneTestCase { public void testBinaryToString() { TermInSetQuery query = new TermInSetQuery("field", new BytesRef(new byte[] { (byte) 0xff, (byte) 0xfe })); - assertEquals("field:[ff fe]", query.toString()); + assertEquals("field:([ff fe])", query.toString()); } public void testIsConsideredCostlyByQueryCache() throws IOException {