Индексирование числового диапазона в Solr

#solr #solrj #solr4 #solrcloud #solrnet

#solr #solrj #solr4 #solrcloud #solrnet

Вопрос:

Кто-нибудь знает, возможно ли отфильтровать индекс числового диапазона, такого как «1-5», чтобы быть «1»,»2″,»3″,»4″,»5″? Я не могу найти ни одной фабрики фильтров, которая делает это.

Пример: «1-5 ABC» индексируется как «1 ABC», «2 ABC», «3 ABC», «4 ABC», «5 ABC»

Комментарии:

1. Не могли бы вы уточнить, что именно вы пытаетесь сделать? Просто пытаюсь разобраться в вашем вопросе. Вы хотите фильтровать результаты поиска на основе диапазона в идентификаторе?

2. @LeftyGBalogh Фильтр по результату поиска легко выполнить, но мне нужно иметь фабрику фильтров, которая индексирует мой документ, скажем, «1-5 A», на «1 A», «2 A», «3 A», «4 A», «5 A», поэтому, когда я выполняю поиск «3 A», я получаю результат документа «1-5 A»

Ответ №1:

То, что вы хотите, может быть достигнуто наверняка, но это может быть непросто.

Одним из возможных способов сделать это без написания кода Java может быть использование PatternReplaceFilter в вашей цепочке анализа. Мой опыт в регулярных выражениях очень прост, поэтому я не могу с уверенностью сказать, возможно это или нет … Ваше регулярное выражение должно быть способно сопоставлять и захватывать токены типа ‘1-3’, а затем заменять их на ‘1’, ‘2’, ‘3’. Но я сомневаюсь, что это возможно сделать, так как вам нужно выдавать несколько токенов за совпадение…

Верный способ добиться этого — написать свой пользовательский класс filterfactory и обрабатывать логику там. Это возможно, но требует знаний Java.