A client noticed that when limiting by branch, some search results were wrong and after a bit of digging, I found that it happens when the branchcode contains a hyphen.
I was able to recreate the situation as follows:
1) Go to Administration > Libraries and add the libraries
- Fairfield (branchcode FFL) -- if you have the default database, this library should already exist
- Fairfield North (branchcode FFL-N)
- Fairfield South (branchcode FFLS)
2) Add an item to record A with holding branch FFL-N
3) Add an item to record B with holding branch FFLS
4) reindex if necessary
5) In Advanced search, search for record A and limit to Fairfield North library -- record is in the results - OK
6) In Advanced search, search for record A and limit to Fairfield library
-- record is in the results! - NOT OK
7) In Advanced search, search for record B and limit to Fairfield South library -- record is in the results - OK
8) In Advanced search, search for record B and limit to Fairfield library
-- record is not in results - OK
As you can see, the search for branchcode FFL-N and for branchcode FFL give the same results.
The problem was originally found by a client using 18.05.03. I was able to recreate in 20.05.08 and master (21.06.000), always with Zebra. I didn't try with ES because mine is currently broken :(
that's a known issue. The search by library and others are keyword searches. hyphens are treated as spaces, so FFL-N is "FFL S" and a search for FFL will find it. Same is true for locations, collections etc.
I don't think changing the hyphen behavior in general would be a good idea as we want that for normal search. Using "ext" (exact field search) was problematic in the past - it didn't work for libraries using ICU. Not sure if it does now.
Safest option might be to avoid hyphens in the codes.
To add in the manual, no hyphens in branchodes, loc, CCODE