Why am I getting partial results?

Occasionally, we may serve partial results. Partial results happen for one of two reasons.

  1. You perform an expensive query on a large index. If you ask for a term that occurs 100,000 times in your index (or the wildcard operator *:*), we may only evaluate the first 20,000 matching documents, and send you back the first 10. You may see changing results when, for example, one query evaluates the first 20,000 documents, and the next query evaluates the first 25,000.
  2. In a cloud environment, the IO of the underlying instances can fluctuate. If we do not have enough available IO to complete your request in a timely manner, we will search as much as we can in a short amount of time, and return what we have found. This is to avoid hanging your app.

Detecting and reacting to partial results

You can tell when you are getting partial results, because there will be a partialResults flag set to true in the response header. In JSON, this looks like:

{"responseHeader":
    {"status":0,
     "partialResults":true,
     "QTime":200,
     "params":{"wt":"json"}
  },
 "response":{"numFound":7793,"start":0,"docs":[ ... ]}}

Depending on the structure of your query, you may benefit from retrying your search an additional time, in order to benefit from the caching of any query filters and document results.

Depending on the data being indexed, and average document sizes, some plans may simply need more memory than the averages our plans' document recommendations are based on. Please contact us for an analysis of the size of your index so that we can recommend a more appropriate service level for your needs.