I am not clear from your post if GetHintHash
is a data retrieval operation or a pure computation function.
If you are asking, "Can I design a data storage system which includes hint hashes that can be retrieved from storage via a function named GetHintHash(hash)
which will allow me to retrieve records that are related?" then yes, obviously, you have just described such a system.
If you are asking, "Can I write a function that will tell me if two hashes were derived from similar cleartext, given no other data other than the two hashes?" The answer is NO, unless your hash function sucks. You are asking for the converse of the bolded bullet below:
The ideal cryptographic hash function has four main properties:
it is quick to compute the hash value for any given message
it is infeasible to generate a message from its hash value except by trying all possible messages
a small change to a message should change the hash value so extensively that the new hash value appears uncorrelated with the old hash value
it is infeasible to find two different messages with the same hash value
(source: Wikipedia)