I'm thinking that some of the switches you intend to include are reporting different info for one of the many things you're testing.
Check each of those comparisons on a switch that you think it should include but it doesn't. You'll probably find one difference that's causing it to be left out.
My reports usually have fewer comparisons. I always use Vendor=Cisco and usually find only one more thing to include (i.e. SystemName = [what I'm looking for] or MachineType=Cisco Catalyst 37xx) and sometimes more to exclude (i.e. System Name does not include *mdf-*).
Check the Class Column in the NCM_Entity_Physical Table in your DB
or Display the class column and look for empty classes. These nodes will be filtered out by the class = 3. I am currently looking for a cause/fix for this possibility.