Would you be willing to give us an example of one of the false-positives?
The references engine basically uses an inverted file index that tells us which files a particular identifier occurs in. We then chug through all those files and look for occurrences of that identifier. For each occurrence, we see if it maps back to the symbol that you are trying to find references to. There are three different scenarios.
1) The identifier maps to the symbol you are looking for references to. Count it as a reference.
2) The identifier maps to something totally different. Do not count it as a reference.
3) The identifier doesn't map to anything, or context tagging gets an error when it tries to look up the symbol. In this case, we still count it as a reference, because we just don't know if it is a convoluted reference, or just junk code. I admit, 99% of the time, it's junk code, but it's better to error on the side of plenty, so for that 1% where it is a valid reference, we put it in the list.
If you are getting false positives, then you are probably in "case 3" territory. To verify that, go to that occurrence, and hit go to definition. If tagging can't find the precise symbol to jump to, then the question is what is wrong with that occurrence? Is it in #if 0'd code? Is there preprocessing around it that makes the code unparsable? Are all the libraries used by that code tagged?
Dont' be so quick to conclude that the references engine is a "text search", it is a lot more than that, but if tagging is not configured properly, well, as the saying goes, what comes out matches what goes in.