I have the honor to program a plant filter search.
Means you can search plants meeting certain conditions (attributes).
But I need some advice for counting number of occurring attributes.
Over simplified records:
- id: 1; attributes: [color: [red, green], size: 10];
- id: 2; attributes: [color: [red], light: [moderate];
The attributes are varying!
The filter search functionality should provide a counter for each attribute:
color: red (2), green (1)
size: 10 (1)
light: moderate (1)
Now if you’ll select moderate
- green
& size
will be (0), red
(1).
Sadly PostgreSQL is getting to its limit with this requirement.
Counting attributes is too slow.
So I’m in search of an alternative approach. → Advice needed!
More details:
- It concerns about 2,5 k records
- Attributes of all records will have a size of “just” about 10 - 15 MB
- The first most common filters will reduce the record amount just by about 20%
- Update of records / attributes won’t be very frequent
Ideas:
Should I just cache a list of all records + attributes in for example ETS?
And than do the counting / filtering with some Enum
operations?
Or are there any other good approaches I’m currently blind for?