Synonyms aren't expanded if boost applied in Solr 7.3 #84
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This used to work in Solr 6 but got broken in Solr 7.+
If a boost parameter is specified then synonyms are not expanded. The bug originates from SynonymExpandingExtendedDismaxQParserPlugin#applySynonymQueries which assumes that the input query is either a BoostedQuery or a BooleanQuery :
This is no longer the case in Solr 7 where BoostedQuery is deprecated and replaced by FunctionScoreQuery. With this in mind, the code flow in applySynonymQueries becomes
The idea is to expand the wrapped query and then re-wrap the result.
The second argument in the constructor of FunctionScoreQuery is DoubleValuesSource. Unfortunately this is a private field without a getter and I found nothing better than to use introspection. This might not work in Java 9 and 10 as the semantics of Field#setAccessible changed. I tested with Java 8 and it worked for me.
Regards,
Yegor