@Peter, the search he is trying to pull the document is "1149-6" which isn't indexed. I did the same test as you, and yes searching by "PPG1149-6" works because it parses that as searching for PPG, which is part of the indexed content.
In a test of a page that contains "PPG1149-6", this is the content saved using a Simple index:
test test test search test
test test ppg
As you can see, it cut off the numbers. You can view this in Luke lucene index toolbox by clicking "reconstruct & Edit" on the document in the documents tab.
However, i will say this does raise one valid point, you can use the Analyzer of type "Whitespace" which only uses whitespace, this resulted in the full PPG1149-6 being parsed into the document, but because it wasn't tokenized into "PPG" and "1149-6" it still won't allow it to be searched by just "1149-6". Subset gets closer, but still won't contain 1149-6, just 1149.
I think in order to fully accomplish this, he will still need to do a custom analyzer, but along with it he may have to add logic to find the code (PPG1149-6) and split it up into PPG, PPG1149-6, and 1149-6 so he can search for it.