DigtheDirt has an extensive search system built in. I’ll talk more about the meta model in a bit, but for now, I wanted to talk about the tagging system.
The site uses a user interface style called faceted navigation. If you go to the plants page, you’ll see a list of facet groups on the left. Those all expand via remote JavaScript. You can search on any plant attribute, from sun exposure, to soil type/composition/pH, to bloom color and time. I decided not to use indexed search because:
- I wanted tighter control of the metamodel within the search
- I needed to use the tags for many other associations, so we could associate plants with member contributions and users.
- I wanted to keep the deployment footprint dead simple.
So in general, every plant attribute is a tag. For search time behavior, it’s great because I have to count tags early and often, and tags are easy to count.
But write-time performance suffers, and it’s more complex to render a simple plant. I’ll talk about why this tradeoff doesn’t matter as much in a later post.
Next, I’ll introduce the plant card system and the adaptive search.