Буквенно-цифровой запрос диапазона

Есть ли эффективный способ обработки буквенно-цифровых диапазонов в люцене? Примерные диапазоны,

  • От 1 до 1 (включает в себя 1A, 1B.. 1Z)
  • С 10A12 по 10A22 (включает в себя 10A12, 10A13... 120A22)
  • От 1 до 10 (включает в себя 1A,1B..,2A,2B..,9Z,10) [Не включает 10A]

У меня есть два подхода:

  1. Разверните каждый диапазон и индексируйте все возможные значения. Я думаю, уникальные значения не будут огромными.
  2. Индекс на низких и высоких значениях. Тогда используйте запрос диапазона. Не уверен, насколько эффективен запрос диапазона на буквенно-цифровых диапазонах

Нужна консультация специалиста по этому вопросу, пожалуйста.

1 ответ

Решение

Я надеюсь, что вы согласны с тем, что определенные вами правила очень привычны и не совсем подходят для общей структуры, такой как Lucene. Например, почему бы диапазон [1..1] включать буквы, но [1..10] не будет?

Я не знаю, возможно ли это с вашим набором данных, но если бы вы могли придумать правила, преобразуя каждый элемент (включая элемент, имеющий буквы) в уникальное число, используя некоторую произвольную формулу, вы могли бы использовать эту формулу как при индексации, так и при индексировании. выполнение запроса. Это даже позволит сопоставить диапазон.

Другие вопросы по тегам