As you already discovered, address input can be vague.
Geocoding function usually first try to standardize the input, which including use standardized format of road prefix, road post fix, abbreviations etc. It may use fuzzy match algorithm to do this, and I guess at least a part of rating score came from here.
For example an exact match have rating of 0, which means all part of address string is standardized. If it only need minimal change and belong to common pattern, the rating score could still be good. With very wild guess, the rating score will be very low.
I believe the actual score value probably don't have a strict scale, is result of internal algorithms and could change in future, you just need to compare the different match results and know the bigger rating score could mean potential problem.
You can also compare the original address, normalized address and the matched address to check whether the problem is with the normalization or matching process. It could be the address format cannot be process well with the normalizer, or the address format is OK but the geocoder cannot find matches.
P.S. There are several places in PostGIS documentation about address standardization / normalization:
- normalize address
- address standardizer
- pagc normalizer
From my limited knowledge, the normalize_address is built-in function used by geocode(). You need to install extension to use address_standardizer.
The latest release of PostGIS claim to have new native address standardizer.