A few of you have noticed that certain terms appear in the index more than once. The reason for this is due to the type of term. For terms appearing in the content of the document, you will notice that term.field() == "contents". There are other term field types as well, in fact, there are the following term types: contents, title, modified, and uid.
If you simply consider those with field type equal to contents, you will be getting all the terms. The additional types such as title are simply used to specify that maybe that term is more important since it appears in the title of a page, however, you are not required to give it additional weight. If you feel like doing some extra work, you could always experiment and see how it would affect the results if the title terms are given additional weight, but like I said, it’s not required.