>the client would download the index
That doesn't sound like too bad of an idea, given the state of js these days.
Yes, you can cut off irrelevant terms, those with low tf-idf score (the, a, is, are...) or you could filter out stopwords. Or both. Me personally, I would never remove low-scoring terms. Consider the state of the word "is". It's mostly irrelevant, unless you are searching for information about a certain terrorist group.
One small index type (as in number of bytes) is a trie. Another is a huffman tree. They store each term less than once.