The suggester dictionary is not getting built in all the replicas when a "suggest.build=true" is issued. It is getting built only on the replica that the first "suggest.build=true" query hits. Further queries that use the suggest component get only partial suggest results when the replicas where the dictionary is not built are hit.
This can be reproduced with the sample "techproducts" collection,
- Create the "techproducts" collection with 2 shards and 2 replicas.
- The default suggest component "mySuggester" has "buildOnStartup"=false
- Send in this query to build the suggester and query it, "http://localhost:8983/solr/techproducts/suggest?suggest.build=true&suggest.dictionary=mySuggester&suggest.q=elec" . You will see 4 suggestions.
- Hit this query, without the "suggest.build=true" parameter multiple times and sometimes you will see 4 suggestions and in other times only 2 suggestions "http://localhost:8983/solr/techproducts/suggest?suggest.dictionary=mySuggester&suggest.q=elec"
- When the above query in Step 4 is sent with "distrib=false" to each of the replicas, we can see that some replicas does not return any results.
- When the logs are analyzed, we can see that the first time we send a query with "suggest.build=true", the suggest dictionary is built only on the replica that the distributed query hits and not the other ones.
With one "suggest.build=true" query, the dictionary should be built on all replicas, so that further queries can get all the suggestions.
SOLR-10532 The suggest.build and suggest.reload params should be distributed to all replicas