Hi all,
I am using solr 9.3 (with VuFind). I want to use JOIN query to get a list of
books written by certain authors (selected by facets).
First, I do two preparatory steps to try this without JOIN and have some data
to test.
Step 1: Query authority DB (combining 4 facets) to get list of authors.
Query:
/solr/authority/select?fl=authority_str&fq=full_text_str_mv%3A"Matrika
narozených"&fq=full_text_str_mv%3A"Matrika
zemřelých"&fq=gender_facet%3A"žena"&fq=occupation_facet%3A"básníci"&indent=true&q.op=OR&q=*%3A*&useParams=&wt=json
For convenience, I copy the contents of fq boxes:
occupation_facet:"básníci"
gender_facet:"žena"
full_text_str_mv:"Matrika narozených"
full_text_str_mv:"Matrika zemřelých"
Response:
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"q":"*:*",
"indent":"true",
"fl":"authority_str",
"q.op":"OR",
"fq":["occupation_facet:\"básníci\"","gender_facet:\"žena\"","full_text_str_mv:\"Matrika
narozených\"","full_text_str_mv:\"Matrika zemřelých\""],
"wt":"json",
"useParams":"",
"_":"1741770044834"
}
},
"response":{
"numFound":6,
"start":0,
"numFoundExact":true,
"docs":[{
"authority_str":"jk01021170"
},{
"authority_str":"jk01110447"
},{
"authority_str":"jk01021755"
},{
"authority_str":"jk01080703"
},{
"authority_str":"jk01100238"
},{
"authority_str":"jk01152591"
}]
}
}
Step 2: Query biblio DB (using list of authors we got in step 1) to get list of
books.
Query:
/solr/biblio/select?indent=true&q.op=OR&q=authority_search_str_mv%3A(jk01021170
jk01021755 jk01080703 jk01100238 jk01110447 jk01152591)&useParams=
Response:
{
"responseHeader":{
"status":0,
"QTime":1,
"params":{
"q":"authority_search_str_mv:(jk01021170 jk01021755 jk01080703 jk01100238
jk01110447 jk01152591)",
"indent":"true",
"fl":"fullrecord",
"q.op":"OR",
"rows":"10000",
"useParams":"",
"_":"1741770215216"
}
},
"response":{
"numFound":1498,
"start":0,
"numFoundExact":true,
"docs":[...]
}
By grepping result for
"jk01021170|jk01021755|jk01080703|jk01100238|jk01110447|jk01152591", I checked
that data contain the results I wanted.
Step 3: Use join query to combine steps 1 + 2.
Query:
solr/biblio/select?fq={!join fromIndex%3D'authority' from%3D'authority_str'
to%3D'authority_search_str_mv' v%3D'full_text_str_mv%3A"Matrika
narozených"'}&fq={!join fromIndex%3D'authority' from%3D'authority_str'
to%3D'authority_search_str_mv' v%3D'full_text_str_mv%3A"Matrika
zemřelých"'}&fq={!join fromIndex%3D'authority' from%3D'authority_str'
to%3D'authority_search_str_mv' v%3D'gender_facet%3A"žena"'}&fq={!join
fromIndex%3D'authority' from%3D'authority_str' to%3D'authority_search_str_mv'
v%3D'occupation_facet%3A"básníci"'}&indent=true&q.op=OR&q=*%3A*&useParams=
For convenience, I copy the contents of fq boxes:
{!join fromIndex='authority' from='authority_str' to='authority_search_str_mv'
v='occupation_facet:"básníci"'}
{!join fromIndex='authority' from='authority_str' to='authority_search_str_mv'
v='gender_facet:"žena"'}
{!join fromIndex='authority' from='authority_str' to='authority_search_str_mv'
v='full_text_str_mv:"Matrika narozených"'}
{!join fromIndex='authority' from='authority_str' to='authority_search_str_mv'
v='full_text_str_mv:"Matrika zemřelých"'}
Response:
{
"responseHeader":{
"status":0,
"QTime":0,
"params":{
"q":"*:*",
"indent":"true",
"q.op":"OR",
"fq":["{!join fromIndex='authority' from='authority_str'
to='authority_search_str_mv' v='occupation_facet:\"básníci\"'}","{!join
fromIndex='authority' from='authority_str' to='authority_search_str_mv'
v='gender_facet:\"žena\"'}","{!join fromIndex='authority' from='authority_str'
to='authority_search_str_mv' v='full_text_str_mv:\"Matrika
narozených\"'}","{!join fromIndex='authority' from='authority_str'
to='authority_search_str_mv' v='full_text_str_mv:\"Matrika zemřelých\"'}"],
"rows":"0",
"useParams":"",
"_":"1741770215216"
}
},
"response":{
"numFound":1563,
"start":0,
"numFoundExact":true,
"docs":[...]
}
}
By grepping result for
"jk01021170|jk01021755|jk01080703|jk01100238|jk01110447|jk01152591", I checked
that data contain the 1498 results I wanted, but it also contains 65 unwanted
results.
(What is perhaps interesting that only 2 of the wanted results are among the
first 10 results.)
What should I do get rid of these unwanted results?
Thanks for any help,
Josef