I have created following kind of schema in SOLR for indexing "Age High" and "Age Low" fields
<field name="age" type="age-levels-facet" multiValued="true" indexed="true" stored="true" />
<fieldtype name="age-levels-facet" class="solr.TextField">
<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern=";"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="^(([0-2]))?$" replacement="Birth-2" replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern="^(([3-5]))?$" replacement="3-5" replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern="^(([6-8]))?$" replacement="6-8" replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern="^(([9]|1[0-2]))?$" replacement="9-12" replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern="^((1[3-9]|[2-9][0-9]))?$" replacement="13+" replace="all" />
</analyzer>
</fieldtype>
So if, I pass "age=4-12" it will return me result as follow.
Birth-2 (0)
3-5 (1)
6-8 (0)
9-12 (1)
13+(0)
Which is correct as per I have created schema. But not correct logically. eg for user with age group of 4-12, the result would be
Birth-2 (0)
3-5 (1)
6-8 (1)
9-12 (1)
13+(0)
Anyone have any idea, how I can achieve this, using solr????
Why do you need to bake these in? Just use Solr Facet by Range functionality or Facet by Query . Then, you can just store your age as a number.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.