Я думаю, вы ищете что-то вроде объясненного здесь .
Если у вас много диапазонов фасетов, вы можете предварительно вычислить диапазоны в виде простых строк в другом поле во время индексации, играя с регулярным выражением. В основном вы можете создать copyField следующего fieldType, для которого каждый шаблон имеет свой диапазон:
<fieldtype name="priceclass" class="solr.TextField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="^([0-9]{0,2})([\.,][0-9]{1,2})?$" replacement="0 - 99" replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern="^(1[0-9][0-9]|2[0-4][0-9]|)([\.,][0-9]{1,2})?$" replacement="100 - 249" replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern="^(2[5-9][0-9]|[3-4][0-9][0-9])([\.,][0-9]{1,2})?$" replacement="250 - 499" replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern="^([5-9][0-9][0-9])([\.,][0-9]{1,2})?$" replacement="500 - 999" replace="all" />
<filter class="solr.PatternReplaceFilterFactory" pattern="^([0-9]{4,5})([\.,][0-9]{1,2})?$" replacement="999 -" replace="all" />
</analyzer>
</fieldtype>
Затем вы можете напрямую фасетировать новое поле копирования, создавая простой фасет поля.
Таким образом, вы можете избежать использования длинных URL со многими диапазонами, но если вам нужно изменить диапазоны, вам нужно будет переиндексировать все.