SOLR adds a hidden q=*:* if you don’t specify a q parameter to API calls, and thus it first performs the “return all results” before applying the fq. This is much slower to return results. However, q only accepts one filter, so we need to change our parsing architecture to extract one of our fq parameters (where present) and place it in q, without affecting the other filters supplied by the user.
This is a legacy problem affected by the architecture of the website, where you can only really get to the biocache via an 'initial' search, with fq being intended for refining that initial search. The problem doesn't affect GBIF because you just supply all your predicates at once.
SOLR adds a hidden
q=*:*if you don’t specify aqparameter to API calls, and thus it first performs the “return all results” before applying thefq. This is much slower to return results. However,qonly accepts one filter, so we need to change our parsing architecture to extract one of ourfqparameters (where present) and place it inq, without affecting the other filters supplied by the user.This is a legacy problem affected by the architecture of the website, where you can only really get to the biocache via an 'initial' search, with
fqbeing intended for refining that initial search. The problem doesn't affect GBIF because you just supply all your predicates at once.