# Tackle inaccurate query returns of search

I have a large commodity dataset consisting of millions of commodites, where each commodity entity consists of commodity_name, commodity, and brand.

Specifically,

• commodity_name is usually a long sentence such as "Furmax Office Chair Mid Back Swivel Lumbar Support Desk Chair, Computer Ergonomic Mesh Chair with Armrest (Black)".

• commodity is usually a word saying what the commodity is, such as "chair"

• brand is the brand of the commodity, such as Furmax.

My purpose is to, given a search query, return a small number (say 5) of most relevant commodities. What I do now is build a reverse-index and return top 5 commodites for a given query. However, I found that it usually did not return the correct commodities. For example, when I queried "iphone", it may return "iphone case" or "iphone charger". I understand the problem occurs due to the fact that "case" and "charger" may also exist in the reverse-index entry as "iphone". What should I do to address this issue? Thanks!