It occurs to me that rather than implementing the bib search restriction as a facet, it could be done as a search filter along the lines of site() or badge_orgs() or copy_tag(). This would entail updating OpenILS/Application/Storage/Publisher/metabib.pm and OpenILS/Application/Storage/Driver/Pg/QueryParser.pm to recognize the filter and generate SQL to add conditions on the core bib search query. It could also be done as a search modifier similar to #available or #lucky.
Either way, this would eliminate any need for a custom Boolean facet type or changes to the bib ingest mechanism. I don't think it would be particularly time-consuming to implement.
I suggest going for a search filter along the lines of on_reserve(ORG[, ORG2, ORG3...]) rather than just a search modifier, as it might be handy to be able to directly specify that you're looking for items that are on reserve at a given OU or set of OUs. However, it could be done as a search modifier, in which case the user would be relying on site() to scope the search to the desired OUs.
It occurs to me that rather than implementing the bib search restriction as a facet, it could be done as a search filter along the lines of site() or badge_orgs() or copy_tag(). This would entail updating OpenILS/ Application/ Storage/ Publisher/ metabib. pm and OpenILS/ Application/ Storage/ Driver/ Pg/QueryParser. pm to recognize the filter and generate SQL to add conditions on the core bib search query. It could also be done as a search modifier similar to #available or #lucky.
Either way, this would eliminate any need for a custom Boolean facet type or changes to the bib ingest mechanism. I don't think it would be particularly time-consuming to implement.
I suggest going for a search filter along the lines of on_reserve(ORG[, ORG2, ORG3...]) rather than just a search modifier, as it might be handy to be able to directly specify that you're looking for items that are on reserve at a given OU or set of OUs. However, it could be done as a search modifier, in which case the user would be relying on site() to scope the search to the desired OUs.