Буквенно-цифровой запрос диапазона
Есть ли эффективный способ обработки буквенно-цифровых диапазонов в люцене? Примерные диапазоны,
- От 1 до 1 (включает в себя 1A, 1B.. 1Z)
- С 10A12 по 10A22 (включает в себя 10A12, 10A13... 120A22)
- От 1 до 10 (включает в себя 1A,1B..,2A,2B..,9Z,10) [Не включает 10A]
У меня есть два подхода:
- Разверните каждый диапазон и индексируйте все возможные значения. Я думаю, уникальные значения не будут огромными.
- Индекс на низких и высоких значениях. Тогда используйте запрос диапазона. Не уверен, насколько эффективен запрос диапазона на буквенно-цифровых диапазонах
Нужна консультация специалиста по этому вопросу, пожалуйста.
1 ответ
Решение
Я надеюсь, что вы согласны с тем, что определенные вами правила очень привычны и не совсем подходят для общей структуры, такой как Lucene. Например, почему бы диапазон [1..1]
включать буквы, но [1..10]
не будет?
Я не знаю, возможно ли это с вашим набором данных, но если бы вы могли придумать правила, преобразуя каждый элемент (включая элемент, имеющий буквы) в уникальное число, используя некоторую произвольную формулу, вы могли бы использовать эту формулу как при индексации, так и при индексировании. выполнение запроса. Это даже позволит сопоставить диапазон.