【发布时间】:2014-09-25 12:17:34
【问题描述】:
我在 SOLR 中创建了以下类型的架构,用于索引“Age High”和“Age Low”字段
<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>
因此,如果我通过“age=4-12”,它将返回如下结果。
Birth-2 (0)
3-5 (1)
6-8 (0)
9-12 (1)
13+(0)
根据我创建的架构,这是正确的。但逻辑上不正确。例如对于年龄组为 4-12 的用户,结果将是
Birth-2 (0)
3-5 (1)
6-8 (1)
9-12 (1)
13+(0)
任何人都有任何想法,我如何使用 solr 来实现这一点????
【问题讨论】:
标签: design-patterns solr filter schema