This is a common problem with many formats exported from modeling tools. It shows up in FBX as well. The simple truth is that you need to take the triangle list as master, unwind the individual indices, and construct a completely unindexed mesh. You can either leave it that way or recompute the indices by vertex deduplication. There's no way around this step and it's yet another reason that people avoid using interchange formats like FBX and Collada directly as game assets.
IMO the easiest way to reconstruct new indices is to create a Vertex struct with an operator<, and then insert all the vertices into a std::map(Vertex, unsigned int). Then you can scan over the vertices again, looking up their indices from the map, and create an index buffer that way. I'm sure this isn't the fastest way, but it's very straightforward to write.