Below is a list of some suggestions
- try using dynamic fields
<dynamicField name="degree_level_*" type="string" indexed="true" stored="true" />
and create fields dynamically while indexing degree_level_Bachelors with value Harward University and so on. so when you want to filter on Bachelors degree, filter on field degree_level_Bachelors. Similarly, if you want to allow filtering on institutions, create a dynamic field for institutions. -
you can pre define how you will be storing data:
<year><seperator><degree><seperator><institution><seperator><Major> etc etc.
and then filter on the reqired regex.
eg:
fq=educationDetails:2009@Bachelors@Harvard@*
this will give you all records with bachelors from Harvard in 2009. you will have to come up with the regex expressions for all the different filters. - two collections to correctly model the one-to-many relationship between user and degree queried using {!join}
- one collection at a "user-degree" level of granularity that gets deduped via Solr's field collapsing support.