I'm using the same cross-core join functionquery quite extensively in my use case: for facet queries, filter queries and field aliasing. I tried to derefence the join query syntax with local parameters to enable clean client request, but this seemed not so simple and only possible via introducing a 2nd local parameter...
The regular join query syntax with dereferenced parameter: {!join fromIndex=core2 from=core2_a to=core1_a v=$qq} This is always parsed to: {!join fromIndex=core2 from=core2_a to=core1_a}core1_df:<value of $qq> The problem is that the df parameter (core1_df) is set a field in core1 for the default query field in the main query clause (for the regular searches) and doesn't exist in the core2. Hence this causes a 'field <df> not found' error. The "workaround" that I found, is to define the 2nd local parameter as a query (thanks to SOLR-2128 <https://issues.apache.org/jira/browse/SOLR-2128> ): {!join fromIndex=core2 from=core2_a to=core1_a v=$jqq} with: jqq={!df=core2_df v=$qq} or jqq={!term f=core2_df v=$qq} This was the only approach that I found where the join was parsed/executed as I wanted in the facet queries, filter queries and field aliasing. So this solved my issue. However, unless there is a syntax that I overlooked (in that case, thanks for pointing this out), I think it would make sense to add a df and/or qf local parameter to the cross core join query. In a typical use case, the joined core2 will have a completely different schema than the main core1. So suggestion is to enable a syntax as: {!join fromIndex=core2 from=core2_a qf=core2_df to=core1_a v=$qq} All comments welcome! ----- *Kind regards, Vriendelijke groeten, Cordialement,* Paul Blanchaert *www.amosis.eu* Tel: +32 497 05.01.03