2016-10-18 3 views
4

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

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

+0

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

+0

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

ответ

1

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

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

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

Смежные вопросы