Пересекающиеся границы с люценом - PullRequest
1 голос
/ 24 марта 2010

Я использую Lucene и пытаюсь найти способ индексировать и получать документы, имеющие свойство ранжирования.

Например, у меня есть:

Document 1: Price:[30 TO 50]
Document 2: Price:[45 TO 60]
Document 3: Price:[60 TO 70]

И Я хотел бы найти все документы, диапазоны которых пересекают определенный интервал , в приведенном выше примере, если я ищу Price in [55 TO 65], я должен получить Document 2 и Document 3 в качестве результатов. .

Я не думаю, что только NumericRangeQueries справится с задачей, мне нужно работать с индексом с чем-то похожим на R-деревья, но реализованы ли они в Lucene? Кроме того, я предполагаю, что мне нужен подкласс MultiTermQuery, потому что запрос Price in [55 TO 65] имеет две границы, но я не вижу ничего подходящего среди подклассов MultiTermQuery.

Любая помощь приветствуется, спасибо,

Silvio

P.S. Я использую Lucene 2.9.0, но при необходимости могу обновиться до последней версии.

1 Ответ

1 голос
/ 24 марта 2010

Одна из простых опций - во время индексации просто расширить диапазоны до каждого дискретного значения в диапазоне. Поэтому [30-50] будут проиндексированы как 30, 31, 32, 33, 34 и т. Д. Затем используйте запрос нормального диапазона для запроса диапазона. До тех пор, пока нет тонны дискретных значений (миллионов), это может работать достаточно хорошо.

...