TRIE поле делает диапазон запросы быстрее, предварительно рассчитав определенные результаты дальности и хранение их как одну запись в индексе. Для ясности мой пример будет использовать целые числа в базе десять. Эта же концепция применяется ко всем типам trie. Это включает даты, поскольку дату можно представить в виде количества секунд, например, 1970.
Предположим, мы указали номер 12345678
. Мы можем обозначить это в следующих токенах.
12345678
123456xx
1234xxxx
12xxxxxx
Ток 12345678
представляет фактическое целочисленное значение. Знаки с цифрами x
представляют диапазоны.123456xx
представляет диапазон 12345600
до 12345699
и соответствует всем документам, содержащим токен в этом диапазоне.
Обратите внимание, что в каждом токене в списке последовательно больше x
цифр. Это контролируется шагом точности. В моем примере вы можете сказать, что я использовал прецизионный шаг 2, так как я обрезаю 2 цифры, чтобы создать каждый дополнительный токен. Если бы я использовал прецизионный шаг 3, я бы получил эти жетоны.
12345678
12345xxx
12xxxxxx
прецизионный шаг 4:
12345678
1234xxxx
прецизионный шаг 1:
12345678
1234567x
123456xx
12345xxx
1234xxxx
123xxxxx
12xxxxxx
1xxxxxxx
Это легко увидеть, как меньшие точность шага приводит к более лексем и увеличивает размер индекса. Тем не менее, он также ускоряет запросы диапазона.
Без поля TRIE, если бы я хотел, чтобы запросить диапазон от 1250 до 1275, Lucene бы принести 25 записей (1250
, 1251
, 1252
..., 1275
) и обобщать результаты поиска. С полем TRIE (и точностью шагом 1), мы могли бы уйти с выборкой 8 записей (125x
, 126x
, 1270
, 1271
, 1272
, 1273
, 1274
, 1275
), потому что 125x
является предварительно вычисленной агрегацией 1250
- 1259
. Если бы я использовал прецизионный шаг, превышающий 1, запрос вернется к извлечению всех 25 отдельных записей.
Примечание: В действительности шаг точности относится к количеству битов, обрезанных для каждого токена. Если бы вы записывали свои цифры в шестнадцатеричном виде, то шаг точности 4 обрезал бы одну шестую цифру для каждого токена. Точный шаг 8 будет обрезать две шестнадцатеричные цифры.
5 лет спустя, по-прежнему такая же ситуация с Google, Solr manual, solr wiki и т. Д. О, нет, что-то изменилось: теперь Google указывает здесь :) – alisa