campos Trie hacen rango consultas más rápidamente por la precomputación ciertos resultados de rango y almacenamiento ellos como un solo registro en el índice. Para mayor claridad, mi ejemplo usará enteros en la base diez. El mismo concepto se aplica a todos los tipos de trie. Esto incluye fechas, ya que una fecha se puede representar como el número de segundos desde, por ejemplo, 1970.
Digamos que indexamos el número 12345678
. Podemos tokenizar esto en los siguientes tokens.
12345678
123456xx
1234xxxx
12xxxxxx
El token 12345678
representa el valor entero real. Los tokens con los dígitos x
representan rangos.123456xx
representa el rango 12345600
a 12345699
, y coincide con todos los documentos que contienen un token en ese rango.
Observe cómo cada token en la lista tiene sucesivamente más dígitos x
. Esto es controlado por el paso de precisión. En mi ejemplo, podría decir que estaba usando un paso de precisión de 2, ya que recorte 2 dígitos para crear cada ficha adicional. Si tuviera que usar un paso de precisión de 3, obtendría estos tokens.
12345678
12345xxx
12xxxxxx
Un paso precisión de 4:
12345678
1234xxxx
Un paso precisión de 1:
12345678
1234567x
123456xx
12345xxx
1234xxxx
123xxxxx
12xxxxxx
1xxxxxxx
Es fácil ver cómo un paso de precisión menores resultados en más fichas y aumenta el tamaño del índice. Sin embargo, también acelera las consultas de rango.
Sin el campo trie, si quería consultar un rango de 1250 a 1275, Lucene tendría en busca de entradas (25 1250
, 1251
, 1252
, ..., 1275
) y combinar los resultados de búsqueda. Con un campo trie (y precisión de paso 1), podríamos ir a buscar salirse con 8 entradas (125x
, 126x
, 1270
, 1271
, 1272
, 1273
, 1274
, 1275
), porque 125x
es una agregación de precomputed 1250
-1259
. Si tuviera que usar un paso de precisión mayor que 1, la consulta volvería a buscar las 25 entradas individuales.
Nota: En realidad, el paso de precisión se refiere a la cantidad de bits recortados para cada token. Si tuviera que escribir sus números en hexadecimal, un paso de precisión de 4 recortaría un dígito hexadecimal para cada token. Un paso de precisión de 8 recortaría dos dígitos hexadecimales.
5 años después, sigue la misma situación con Google, Solr manual, Solr wiki, etc. Oh, no, algo ha cambiado: Google ahora apunta aquí :) – alisa