This is an automated email from the ASF dual-hosted git repository.

epugh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 3e493adc30f SOLR-18371: remove the deprecated pre-QueryCommand 
SolrIndexSearcher methods (#4754)
3e493adc30f is described below

commit 3e493adc30f6b50fe22d5258beade1871d9a596d
Author: Serhiy Bzhezytskyy <[email protected]>
AuthorDate: Fri Aug 21 02:25:18 2026 +0300

    SOLR-18371: remove the deprecated pre-QueryCommand SolrIndexSearcher 
methods (#4754)
---
 ...e-prequerycommand-solrindexsearcher-methods.yml |   8 +
 .../apache/solr/handler/MoreLikeThisHandler.java   |  34 ++-
 .../org/apache/solr/search/SolrIndexSearcher.java  | 307 +--------------------
 .../org/apache/solr/highlight/HighlighterTest.java |  10 +-
 4 files changed, 42 insertions(+), 317 deletions(-)

diff --git 
a/changelog/unreleased/SOLR-18371-remove-prequerycommand-solrindexsearcher-methods.yml
 
b/changelog/unreleased/SOLR-18371-remove-prequerycommand-solrindexsearcher-methods.yml
new file mode 100644
index 00000000000..455fde7f544
--- /dev/null
+++ 
b/changelog/unreleased/SOLR-18371-remove-prequerycommand-solrindexsearcher-methods.yml
@@ -0,0 +1,8 @@
+# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc
+title: Remove the deprecated pre-QueryCommand SolrIndexSearcher methods - 
search(QueryResult, QueryCommand), three getDocList overloads and five 
getDocListAndSet overloads. Build a QueryCommand and call search(searcher) 
instead, using setNeedDocSet(true) where getDocListAndSet was used.
+type: removed
+authors:
+  - name: Serhiy Bzhezytskyy
+links:
+  - name: SOLR-18371
+    url: https://issues.apache.org/jira/browse/SOLR-18371
diff --git 
a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java 
b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
index f1a87df3e0b..28874ada8a7 100644
--- a/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/MoreLikeThisHandler.java
@@ -415,13 +415,16 @@ public class MoreLikeThisHandler extends 
RequestHandlerBase {
           BooleanClause.Occur.MUST_NOT);
       this.realMLTQuery = realMLTQuery.build();
 
-      DocListAndSet results = new DocListAndSet();
-      if (this.needDocSet) {
-        results = searcher.getDocListAndSet(this.realMLTQuery, filters, null, 
start, rows, flags);
-      } else {
-        results.docList = searcher.getDocList(this.realMLTQuery, filters, 
null, start, rows, flags);
-      }
-      return results;
+      // setNeedDocSet must follow setFlags: it sets or clears GET_DOCSET 
within the flags
+      QueryCommand qc =
+          new QueryCommand()
+              .setQuery(this.realMLTQuery)
+              .setFilterList(filters)
+              .setOffset(start)
+              .setLen(rows)
+              .setFlags(flags)
+              .setNeedDocSet(this.needDocSet);
+      return qc.search(searcher).getDocListAndSet();
     }
 
     /** Sets {@link #boostedMLTQuery} and returns it */
@@ -455,13 +458,16 @@ public class MoreLikeThisHandler extends 
RequestHandlerBase {
         rawMLTQuery = mlt.like(multifieldDoc);
       }
       boostedMLTQuery = getBoostedQuery(rawMLTQuery);
-      DocListAndSet results = new DocListAndSet();
-      if (this.needDocSet) {
-        results = searcher.getDocListAndSet(boostedMLTQuery, filters, null, 
start, rows, flags);
-      } else {
-        results.docList = searcher.getDocList(boostedMLTQuery, filters, null, 
start, rows, flags);
-      }
-      return results;
+      // setNeedDocSet must follow setFlags: it sets or clears GET_DOCSET 
within the flags
+      QueryCommand qc =
+          new QueryCommand()
+              .setQuery(boostedMLTQuery)
+              .setFilterList(filters)
+              .setOffset(start)
+              .setLen(rows)
+              .setFlags(flags)
+              .setNeedDocSet(this.needDocSet);
+      return qc.search(searcher).getDocListAndSet();
     }
 
     /**
diff --git a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java 
b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
index 33d86a7de77..e7786f71d3b 100644
--- a/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
+++ b/solr/core/src/java/org/apache/solr/search/SolrIndexSearcher.java
@@ -778,8 +778,8 @@ public class SolrIndexSearcher extends IndexSearcher 
implements Closeable, SolrI
                   .setLen(nDocs)
                   .setSupersetMaxDoc(nDocs)
                   .setFlags(flags);
-              QueryResult qr = new QueryResult();
-              newSearcher.getDocListC(qr, qc);
+              // called for its cache side effect; the returned QueryResult is 
unused
+              newSearcher.getDocListC(qc);
               return true;
             }
           });
@@ -788,13 +788,7 @@ public class SolrIndexSearcher extends IndexSearcher 
implements Closeable, SolrI
 
   /** Primary entrypoint for searching, using a {@link QueryCommand}. */
   public QueryResult search(QueryCommand cmd) throws IOException {
-    return search(new QueryResult(), cmd);
-  }
-
-  @Deprecated
-  public QueryResult search(QueryResult qr, QueryCommand cmd) throws 
IOException {
-    getDocListC(qr, cmd);
-    return qr;
+    return getDocListC(cmd);
   }
 
   /**
@@ -835,46 +829,6 @@ public class SolrIndexSearcher extends IndexSearcher 
implements Closeable, SolrI
     }
   }
 
-  /**
-   * Retrieve the {@link Document} instance corresponding to the document id.
-   *
-   * @see SolrDocumentFetcher
-   */
-  /* @Override
-  @Deprecated
-  public Document doc(int docId) throws IOException {
-    return doc(docId, (Set<String>) null);
-  }*/
-
-  /**
-   * Visit a document's fields using a {@link StoredFieldVisitor}. This method 
does not currently
-   * add to the Solr document cache.
-   *
-   * @see IndexReader#document(int, StoredFieldVisitor)
-   * @see SolrDocumentFetcher
-   */
-  /*@Override
-  @Deprecated
-  public final void doc(int docId, StoredFieldVisitor visitor) throws 
IOException {
-    getDocFetcher().doc(docId, visitor);
-  }*/
-
-  /**
-   * Retrieve the {@link Document} instance corresponding to the document id.
-   *
-   * <p><b>NOTE</b>: the document will have all fields accessible, but if a 
field filter is
-   * provided, only the provided fields will be loaded (the remainder will be 
available lazily).
-   *
-   * @see SolrDocumentFetcher
-   */
-  /*
-    @Override
-    @Deprecated
-    public final Document doc(int i, Set<String> fields) throws IOException {
-      return getDocFetcher().doc(i, fields);
-    }
-  */
-
   /** expert: internal API, subject to change */
   public SolrCache<String, UnInvertedField> getFieldValueCache() {
     return fieldValueCache;
@@ -1529,66 +1483,6 @@ public class SolrIndexSearcher extends IndexSearcher 
implements Closeable, SolrI
     }
   }
 
-  /**
-   * Returns documents matching both <code>query</code> and 
<code>filter</code> and sorted by <code>
-   * sort</code>.
-   *
-   * <p>This method is cache aware and may retrieve <code>filter</code> from 
the cache or make an
-   * insertion into the cache as a result of this call.
-   *
-   * <p>FUTURE: The returned DocList may be retrieved from a cache.
-   *
-   * @param filter may be null
-   * @param lsort criteria by which to sort (if null, query relevance is used)
-   * @param offset offset into the list of documents to return
-   * @param len maximum number of documents to return
-   * @return DocList meeting the specified criteria, should <b>not</b> be 
modified by the caller.
-   * @throws IOException If there is a low-level I/O error.
-   */
-  @Deprecated
-  public DocList getDocList(Query query, Query filter, Sort lsort, int offset, 
int len)
-      throws IOException {
-    return new QueryCommand()
-        .setQuery(query)
-        .setFilterList(filter)
-        .setSort(lsort)
-        .setOffset(offset)
-        .setLen(len)
-        .search(this)
-        .getDocList();
-  }
-
-  /**
-   * Returns documents matching both <code>query</code> and the intersection 
of the <code>filterList
-   * </code>, sorted by <code>sort</code>.
-   *
-   * <p>This method is cache aware and may retrieve <code>filter</code> from 
the cache or make an
-   * insertion into the cache as a result of this call.
-   *
-   * <p>FUTURE: The returned DocList may be retrieved from a cache.
-   *
-   * @param filterList may be null
-   * @param lsort criteria by which to sort (if null, query relevance is used)
-   * @param offset offset into the list of documents to return
-   * @param len maximum number of documents to return
-   * @return DocList meeting the specified criteria, should <b>not</b> be 
modified by the caller.
-   * @throws IOException If there is a low-level I/O error.
-   */
-  @Deprecated
-  public DocList getDocList(
-      Query query, List<Query> filterList, Sort lsort, int offset, int len, 
int flags)
-      throws IOException {
-    return new QueryCommand()
-        .setQuery(query)
-        .setFilterList(filterList)
-        .setSort(lsort)
-        .setOffset(offset)
-        .setLen(len)
-        .setFlags(flags)
-        .search(this)
-        .getDocList();
-  }
-
   public static final int NO_CHECK_QCACHE = 0x80000000;
   public static final int GET_DOCSET = 0x40000000;
   static final int NO_CHECK_FILTERCACHE = 0x20000000;
@@ -1630,8 +1524,8 @@ public class SolrIndexSearcher extends IndexSearcher 
implements Closeable, SolrI
    * getDocList version that uses+populates query and filter caches. In the 
event of a timeout, the
    * cache is not populated.
    */
-  private QueryResult getDocListC(QueryResult qr, QueryCommand cmd) throws 
IOException {
-    // TODO don't take QueryResult as arg; create one here
+  private QueryResult getDocListC(QueryCommand cmd) throws IOException {
+    QueryResult qr = new QueryResult();
     if (cmd.getSegmentTerminateEarly()) {
       qr.setSegmentTerminatedEarly(Boolean.FALSE);
     }
@@ -2152,197 +2046,6 @@ public class SolrIndexSearcher extends IndexSearcher 
implements Closeable, SolrI
     return pf.filter == null && pf.postFilter == null ? qr.getDocSet() : null;
   }
 
-  /**
-   * Returns documents matching <code>query</code>, sorted by 
<code>sort</code>.
-   *
-   * <p>FUTURE: The returned DocList may be retrieved from a cache.
-   *
-   * @param lsort criteria by which to sort (if null, query relevance is used)
-   * @param offset offset into the list of documents to return
-   * @param len maximum number of documents to return
-   * @return DocList meeting the specified criteria, should <b>not</b> be 
modified by the caller.
-   * @throws IOException If there is a low-level I/O error.
-   */
-  @Deprecated
-  public DocList getDocList(Query query, Sort lsort, int offset, int len) 
throws IOException {
-    return new QueryCommand()
-        .setQuery(query)
-        .setSort(lsort)
-        .setOffset(offset)
-        .setLen(len)
-        .search(this)
-        .getDocList();
-  }
-
-  /**
-   * Returns documents matching both <code>query</code> and 
<code>filter</code> and sorted by <code>
-   * sort</code>. Also returns the complete set of documents matching 
<code>query</code> and <code>
-   * filter</code> (regardless of <code>offset</code> and <code>len</code>).
-   *
-   * <p>This method is cache aware and may retrieve <code>filter</code> from 
the cache or make an
-   * insertion into the cache as a result of this call.
-   *
-   * <p>FUTURE: The returned DocList may be retrieved from a cache.
-   *
-   * <p>The DocList and DocSet returned should <b>not</b> be modified.
-   *
-   * @param filter may be null
-   * @param lsort criteria by which to sort (if null, query relevance is used)
-   * @param offset offset into the list of documents to return
-   * @param len maximum number of documents to return
-   * @return DocListAndSet meeting the specified criteria, should <b>not</b> 
be modified by the
-   *     caller.
-   * @throws IOException If there is a low-level I/O error.
-   */
-  @Deprecated
-  public DocListAndSet getDocListAndSet(Query query, Query filter, Sort lsort, 
int offset, int len)
-      throws IOException {
-    return new QueryCommand()
-        .setQuery(query)
-        .setFilterList(filter)
-        .setSort(lsort)
-        .setOffset(offset)
-        .setLen(len)
-        .setNeedDocSet(true)
-        .search(this)
-        .getDocListAndSet();
-  }
-
-  /**
-   * Returns documents matching both <code>query</code> and 
<code>filter</code> and sorted by <code>
-   * sort</code>. Also returns the compete set of documents matching 
<code>query</code> and <code>
-   * filter</code> (regardless of <code>offset</code> and <code>len</code>).
-   *
-   * <p>This method is cache aware and may retrieve <code>filter</code> from 
the cache or make an
-   * insertion into the cache as a result of this call.
-   *
-   * <p>FUTURE: The returned DocList may be retrieved from a cache.
-   *
-   * <p>The DocList and DocSet returned should <b>not</b> be modified.
-   *
-   * @param filter may be null
-   * @param lsort criteria by which to sort (if null, query relevance is used)
-   * @param offset offset into the list of documents to return
-   * @param len maximum number of documents to return
-   * @param flags user supplied flags for the result set
-   * @return DocListAndSet meeting the specified criteria, should <b>not</b> 
be modified by the
-   *     caller.
-   * @throws IOException If there is a low-level I/O error.
-   */
-  @Deprecated
-  public DocListAndSet getDocListAndSet(
-      Query query, Query filter, Sort lsort, int offset, int len, int flags) 
throws IOException {
-    return new QueryCommand()
-        .setQuery(query)
-        .setFilterList(filter)
-        .setSort(lsort)
-        .setOffset(offset)
-        .setLen(len)
-        .setFlags(flags)
-        .setNeedDocSet(true)
-        .search(this)
-        .getDocListAndSet();
-  }
-
-  /**
-   * Returns documents matching both <code>query</code> and the intersection 
of <code>filterList
-   * </code>, sorted by <code>sort</code>. Also returns the compete set of 
documents matching <code>
-   * query</code> and <code>filter</code> (regardless of <code>offset</code> 
and <code>len</code>).
-   *
-   * <p>This method is cache aware and may retrieve <code>filter</code> from 
the cache or make an
-   * insertion into the cache as a result of this call.
-   *
-   * <p>FUTURE: The returned DocList may be retrieved from a cache.
-   *
-   * <p>The DocList and DocSet returned should <b>not</b> be modified.
-   *
-   * @param filterList may be null
-   * @param lsort criteria by which to sort (if null, query relevance is used)
-   * @param offset offset into the list of documents to return
-   * @param len maximum number of documents to return
-   * @return DocListAndSet meeting the specified criteria, should <b>not</b> 
be modified by the
-   *     caller.
-   * @throws IOException If there is a low-level I/O error.
-   */
-  @Deprecated
-  public DocListAndSet getDocListAndSet(
-      Query query, List<Query> filterList, Sort lsort, int offset, int len) 
throws IOException {
-    return new QueryCommand()
-        .setQuery(query)
-        .setFilterList(filterList)
-        .setSort(lsort)
-        .setOffset(offset)
-        .setLen(len)
-        .setNeedDocSet(true)
-        .search(this)
-        .getDocListAndSet();
-  }
-
-  /**
-   * Returns documents matching both <code>query</code> and the intersection 
of <code>filterList
-   * </code>, sorted by <code>sort</code>. Also returns the complete set of 
documents matching
-   * <code>query</code> and <code>filter</code> (regardless of 
<code>offset</code> and <code>len
-   * </code>).
-   *
-   * <p>This method is cache aware and may retrieve filters from the cache or 
make an insertion into
-   * the cache as a result of this call.
-   *
-   * <p>FUTURE: The returned DocList may be retrieved from a cache.
-   *
-   * <p>The DocList and DocSet returned should <b>not</b> be modified.
-   *
-   * @param filterList may be null
-   * @param lsort criteria by which to sort (if null, query relevance is used)
-   * @param offset offset into the list of documents to return
-   * @param len maximum number of documents to return
-   * @param flags user supplied flags for the result set
-   * @return DocListAndSet meeting the specified criteria, should <b>not</b> 
be modified by the
-   *     caller.
-   * @throws IOException If there is a low-level I/O error.
-   */
-  @Deprecated
-  public DocListAndSet getDocListAndSet(
-      Query query, List<Query> filterList, Sort lsort, int offset, int len, 
int flags)
-      throws IOException {
-    return new QueryCommand()
-        .setQuery(query)
-        .setFilterList(filterList)
-        .setSort(lsort)
-        .setOffset(offset)
-        .setLen(len)
-        .setFlags(flags)
-        .setNeedDocSet(true)
-        .search(this)
-        .getDocListAndSet();
-  }
-
-  /**
-   * Returns the top documents matching the <code>query</code> and sorted by 
<code>
-   * sort</code>, limited by <code>offset</code> and <code>len</code>. Also 
returns compete set of
-   * matching documents as a {@link DocSet}.
-   *
-   * <p>FUTURE: The returned DocList may be retrieved from a cache.
-   *
-   * @param lsort criteria by which to sort (if null, query relevance is used)
-   * @param offset offset into the list of documents to return
-   * @param len maximum number of documents to return
-   * @return DocListAndSet meeting the specified criteria, should <b>not</b> 
be modified by the
-   *     caller.
-   * @throws IOException If there is a low-level I/O error.
-   */
-  @Deprecated
-  public DocListAndSet getDocListAndSet(Query query, Sort lsort, int offset, 
int len)
-      throws IOException {
-    return new QueryCommand()
-        .setQuery(query)
-        .setSort(lsort)
-        .setOffset(offset)
-        .setLen(len)
-        .setNeedDocSet(true)
-        .search(this)
-        .getDocListAndSet();
-  }
-
   private DocList constantScoreDocList(int offset, int length, DocSet docs) {
     final int size = docs.size();
 
diff --git a/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java 
b/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java
index 0f50498c75b..23ad0ca6533 100644
--- a/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java
+++ b/solr/core/src/test/org/apache/solr/highlight/HighlighterTest.java
@@ -41,6 +41,7 @@ import org.apache.solr.handler.component.ResponseBuilder;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
+import org.apache.solr.search.QueryCommand;
 import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -1397,7 +1398,14 @@ public class HighlighterTest extends SolrTestCaseJ4 {
       SolrQueryResponse resp = new SolrQueryResponse();
       ResponseBuilder rb = new ResponseBuilder(req, resp, List.of(hlComp));
       rb.setHighlightQuery(query);
-      rb.setResults(req.getSearcher().getDocListAndSet(query, null, 0, 1));
+      rb.setResults(
+          new QueryCommand()
+              .setQuery(query)
+              .setOffset(0)
+              .setLen(1)
+              .setNeedDocSet(true)
+              .search(req.getSearcher())
+              .getDocListAndSet());
       // highlight:
       hlComp.prepare(rb);
       hlComp.process(rb);

Reply via email to