When I started building a free iOS library of Clash of Clans base layouts, I assumed search would be the hard part. It turned out the hard part was deciding what a "base" even is in data terms.
The three fields that mattered
Town Hall level – the single filter every player uses first. Stored as an integer, never as a string like "TH16", so ranges (14–16) are trivial.
Purpose – war, farm, trophy, or hybrid. Players think in goals, not in building positions.
Source link – the in-game copy link. Everything else is metadata; this is the payload.
What I dropped
I tried tagging "anti-2-star", "anti-3-star", "ring base", "island base"… and nobody used those filters. They were opinions, not facts, and two people tagged the same base differently. I kept them as free-text notes instead.
What I learned
Model the decision the user makes, not the object. Players decide "I need a TH16 farm base", so that's the index.
Keep opinionated labels out of filters.…