#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.