36 votos

Indización de Lucene: Explicación de los modos de almacenamiento e indexación

Creo que todavía no entiendo las opciones de indexación de Lucene.

Las siguientes opciones son

  • Tienda. Sí.
  • Tienda. No

y

  • Indice.
  • Índice.
  • Índice. No
  • Índice.No_Normas

Realmente no entiendo la opción de la tienda. ¿Por qué no quieres almacenar tu campo?
El "Tokenizing" es dividir el contenido y eliminar las palabras/separadores de ruido (como "and", "or" etc.)
No tengo ni idea de lo que pueden ser las normas. ¿Cómo se almacenan los valores simbólicos?
¿Qué pasa si almaceno un valor "mi cadena" en "fieldName"? ¿Por qué una consulta

fieldName:my string

¿Devolver algo?

70voto

dustyburwell Puntos 4501

Tienda. Sí.

Significa que el valor del campo se almacenará en el índice

Tienda. No

Significa que el valor del campo NO ser almacenado en el índice

Almacenar.Si/No afecta a la indexación o búsqueda con lucene. Sólo le dice a Lucene si quiere que actúe como un almacén de datos para los valores del campo. Si utiliza Store.Yes, entonces cuando realice la búsqueda, el valor de ese campo se incluirá en el resultado de la búsqueda Documents.

Si almacena sus datos en una base de datos y sólo utiliza el índice Lucene para la búsqueda, entonces puede salirse con Store.No en todos sus campos. Sin embargo, si estás usando el índice como almacenamiento también, entonces querrás Store.Yes.

Indice.

Significa que el campo será simbólico cuando esté indexado (ya lo tienes). Esto es útil para campos largos con múltiples palabras.

Índice.

Significa que el campo no será analizado y será almacenado como un valor único. Esto es útil para palabra clave/palabra única y algunos campos cortos de varias palabras.

Índice. No

Exactamente lo que dice. El campo no estará indexado y por lo tanto será inescrutable. Sin embargo, usted puede usa Index.No junto con Store.Yes para almacenar un valor que no quieras que se pueda buscar.

Índice.No_Normas

Lo mismo que el índice.Un_Tokenized excepto que se guardarán unos pocos bytes al no almacenar algunos datos de normalización. Estos datos son los que se utilizan para el aumento y la normalización de la longitud de campo.

Para más información, los javadocs de Lucene no tienen precio (versión actual de la API 4.4.0):

Para su última pregunta, sobre por qué su consulta no devuelve nada, sin saber ya cómo está indexando ese campo, diría que es porque su calificador de nombre de campo sólo está unido a la cadena "mi". Para hacer la búsqueda de la frase "mi cadena" que quieres:

Nombre de campo: "mi cadena"

Una búsqueda de las palabras "mi" y "cadena" en el campo "Nombre":

fieldName:(mi cadena)

2voto

Ian Durkan Puntos 575

En caso de que algún usuario de Java se tropiece con esto, las mismas opciones de la respuesta de marzo de 2009 todavía existen en la biblioteca de Java de Lucene 4.6.0 pero están desactualizadas. La forma actual de establecer estas opciones es a través de FieldType .

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X