jpountz commented on code in PR #12816:
URL: https://github.com/apache/lucene/pull/12816#discussion_r1396259219


##########
lucene/core/src/java/org/apache/lucene/search/HumanReadableQuery.java:
##########
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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.apache.lucene.search;
+
+import java.io.IOException;
+
+/**
+ * A query for wrapping other queries for debug purposes. Behaves like the 
given query, but when
+ * printing to a string, it will prepend the description parameter to the 
query.
+ */
+public final class HumanReadableQuery extends Query {
+
+  private final Query in;
+  private final String description;
+
+  /**
+   * Create a new HumanReadableQuery
+   *
+   * @param in the query to wrap
+   * @param description a human-readable description, used in toString()
+   */
+  HumanReadableQuery(Query in, String description) {
+    this.in = in;
+    this.description = description;
+  }
+
+  /**
+   * @return the wrapped Query
+   */
+  public Query getWrappedQuery() {
+    return in;
+  }
+
+  /**
+   * @return the query description
+   */
+  public String getDescription() {
+    return description;
+  }
+
+  @Override
+  public Query rewrite(IndexSearcher indexSearcher) throws IOException {
+    Query rewritten = in.rewrite(indexSearcher);
+    if (rewritten == in) {
+      return this;
+    }
+    return new HumanReadableQuery(rewritten, description);
+  }
+
+  @Override
+  public String toString(String field) {
+    return this.getDescription() + ":" + in.toString(field);
+  }
+
+  @Override
+  public void visit(QueryVisitor visitor) {
+    in.visit(visitor);
+  }
+
+  @Override
+  public boolean equals(Object other) {
+    return sameClassAs(other) && in.equals(((HumanReadableQuery) other).in);
+  }
+
+  @Override
+  public Weight createWeight(IndexSearcher searcher, ScoreMode scoreMode, 
float boost)
+      throws IOException {
+    return in.createWeight(searcher, scoreMode, boost);

Review Comment:
   Or we keep it as simple as possible, return the inner query in #rewrite and 
throw an UnsupportedOperationException in #createWeight?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to