En ingeniería de software creamos índices todo el tiempo (por ejemplo, en bases de datos) pero también escucho a mucha gente hablar de índices invertidos. ¿Hay algo fundamentalmente diferente entre los dos? Suenan como lo mismo.
En ingeniería de software creamos índices todo el tiempo (por ejemplo, en bases de datos) pero también escucho a mucha gente hablar de índices invertidos. ¿Hay algo fundamentalmente diferente entre los dos? Suenan como lo mismo.
Respuestas:
Un uso común es "... para permitir búsquedas rápidas de texto completo".
Los dos tipos denotan direccionalidad . Uno lo lleva hacia adelante a través del índice y el otro lo lleva hacia atrás (el inverso) a través del índice. Eso es. No hay ningún misterio que descubrir aquí. De lo contrario, los dos tipos son idénticos, es solo una cuestión de qué información tiene y, como resultado, qué información está tratando de encontrar.
Para abordar su consulta, no creo que haya una forma de saber por qué el uso es el que es hoy. La única razón por la que es importante definir cuál es forward
y cuál es inverted
es para que todos podamos tener una conversación sobre ellos, y todos sepan de qué dirección estamos hablando. Piense en los términos "izquierda" y "derecha": son relativos. Cuál es cuál no importa, excepto que todos deben estar de acuerdo sobre cuál es "izquierda" y cuál es "correcta" para que las palabras tengan significado. Si, como cultura, decidiéramos girar de izquierda a derecha, entonces tendrías el mismo problema al determinar qué es un "giro a la derecha" frente a un "giro a la izquierda", ya que el significado acordado había cambiado. Sin embargo, el nombre es arbitrario, sobre el significado.
En su comentario en el que pregunta, "por favor, no se limite a definir los términos", se está perdiendo el punto, y creo que se está obsesionando con la redacción cuando no hay absolutamente ninguna diferencia entre ellos.
Para beneficio de los futuros lectores, ahora proporcionaré varios ejemplos de índices "hacia adelante" e "invertidos":
Si está pensando que la inversa de un índice es algo así como inversa de una función en matemáticas , donde la inversa es una cosa especial que tiene una forma diferente, entonces estás equivocado: ese no es el caso aquí.
En un motor de búsqueda tienes una lista de documentos (páginas en sitios web), donde ingresas algunas palabras clave y obtienes resultados.
Un índice de avance (o simplemente un índice) es el lista de documentos y las palabras que aparecen en ellos. En el ejemplo de búsqueda web, Google rastrea la web, construye la lista de documentos y determina qué palabras aparecen en cada página.
El índice invertido es la lista de palabras. y los documentos en los que aparecen. En el ejemplo de búsqueda web, proporciona la lista de palabras (su consulta de búsqueda) y Google produce los documentos (enlaces de resultados de búsqueda).
Ambos son índices, es solo una cuestión de en qué dirección vas. El reenvío es de documentos-> a-> palabras, invertido es de palabras-> a-> documentos.
Otro ejemplo es una búsqueda de DNS (que toma un nombre de host y devuelve una dirección IP) y una búsqueda inversa (que toma una dirección IP y le da el nombre de host).
El índice al final de un libro es en realidad un índice invertido , como se define en los ejemplos anteriores: una lista de palabras y dónde encontrarlas en el libro. En un libro, la tabla de contenido es como un índice hacia adelante : es una lista de documentos (capítulos) que contiene el libro, excepto que en lugar de enumerar las palabras en esas secciones, la tabla de contenido solo da un nombre / descripción general de lo que es contenidos en esos documentos (capítulos).
El índice de reenvío en su teléfono celular es su lista de contactos y qué números de teléfono (celular, casa, trabajo) están asociados con esos contactos. El índice invertido es lo que te permite ingresar manualmente un número de teléfono, y cuando presionas "marcar", ves el nombre de la persona, en lugar del número, porque tu teléfono tomó el número de teléfono y te encontró el contacto asociado con él.
Lo llamaron invertido solo porque ya existe un índice a plazo. Tomemos el ejemplo del motor de búsqueda, compuesto por dos partes: la primera parte es "rastreador y analizador web" que construye un índice de documento a palabra, la segunda parte es una base de datos de búsqueda que construye un índice de palabra a documento. Debido a que existe el primer índice, naturalmente llamamos al segundo índice como índice invertido.
Si nombra el TOC (Tabla de contenido) de un libro como índice, entonces debe llamar al índice al final del libro como "índice invertido". O, en el otro lado, puede llamar al TOC como índice invertido.
inverted index
a pesar de que todos los índices normales de nuestra vida ya se utilizan como inverted
.
Por lo general, cuando se habla de índice, se refiere a algunos cálculos agregados o resultados almacenados de procedimientos que se han realizado para acelerar la aplicación (por ejemplo, MySQL u otro RDBMS Consulte los documentos de MySQL ). La indexación también puede estar relacionada con el almacenamiento en caché, etc.
El índice invertido crea un archivo con una estructura que está destinada principalmente a la búsqueda (de texto completo).
El índice invertido consta de dos archivos principales:
En el vocabulario hay palabras comunes extraídas del texto (por supuesto, después de filtrar palabras de la lista negra como pronombres). El archivo de ocurrencias contiene la conexión entre palabras y documentos (word1 aparece en doc1 y doc2, no en doc3). Está representado en forma de matriz.
En la imagen de arriba se muestra el proceso de creación de los dos archivos mencionados.
Si está más interesado en esta problemática, puedo recomendarle un gran libro escrito por Ricardo Yated - Modern Information Retrieval (Véalo en Amazon ) - sobre la página 200, creo.
Espero eso ayude :-)
la normalidad ya ha diferenciado maravillosamente entre un índice hacia adelante y un índice invertido, pero para la pregunta de por qué uno se llama índice hacia adelante y el otro índice invertido, tal vez es por eso que se llaman así ---
Tomando como ejemplo el rastreo y la indexación de un motor de búsqueda (o la creación de un índice para un libro), se puede construir un índice hacia adelante simultáneamente mientras rastrea las páginas web (o lee el libro) o avanza . Entonces, si tiene 10 páginas web para rastrear (o 10 capítulos en un libro), puede rastrear la primera página web (leer el primer capítulo) y luego hacer una lista de palabras que aparecen en la página web (palabras que aparecen en el capítulo) y continuar. este proceso para otras páginas web (otros capítulos), por lo que cuando haya rastreado las 10 páginas web (lea los 10 capítulos), su índice de avance estará completo con cada página web (capítulo) apuntando a una lista de palabras que contiene .
Pero para hacer un índice invertido tienes que rastrear las 10 páginas web (leer los 10 capítulos) y luego tomar cada palabra de cada lista de documentos y averiguar qué documentos contienen esa palabra. Así que esto es como retroceder una vez que haya rastreado las páginas web (lea los capítulos del libro) . Por eso se llama índice invertido.
Esta es solo mi especulación.
Hay muchos tipos de índices. Por ejemplo, B-tree, R-tree, hash ... Para diferentes propósitos, debemos elegir el índice correcto.
El índice invertido es especial. Índice invertido generalmente utilizado en motores de búsqueda de texto completo. Con el índice invertido podemos averiguar la ubicación de una palabra en un documento (o conjunto de documentos) lo más rápido posible. Piense en el límite de memoria y CPU, otro índice no puede terminar este trabajo.
Puede leer el documento lucene para más detalles. Es un motor de búsqueda de código abierto. http://lucene.apache.org/java/docs/index.html
El término "índice de palabras invertidas" se refiere al cambio en la relación de un solo documento que contiene muchas palabras, a cada palabra única que contiene (o identifica) una lista de muchos documentos. Esto consiste efectivamente en tomar una relación de uno a muchos (documentos a palabras) e invertirla (o invertirla) de modo que ahora exista una nueva relación de uno a muchos "invertida", que es cada palabra única relacionada con muchos. Documentos (es decir, todo lo que contenga esa palabra). Su origen es realmente así de simple, y el término "índice invertido" se usó para describir índices manuales del mismo tipo mucho antes de que existieran las computadoras y la indexación electrónica de alta velocidad (sí, lo admito, soy un programador viejo y geezer, casi lo suficientemente mayor para haber considerado a Grace Hopper una "dulce jovencita" edad apropiada para cortejar cuando COBOL era un nuevo idioma brillante). Por favor, no nos descarten todavía, ya que ocasionalmente podemos proporcionar un par de datos históricos útiles, y posiblemente incluso valiosos, cuando nuestra RAM personal todavía está funcionando, claro. [mueca]
en índices invertidos, tenemos la siguiente forma:
palabra1-> lista de documentos en los que aparece (orden ordenado)
palabra2-> lista de documentos en los que aparece (orden ordenado)
Es muy útil para el procesamiento de consultas de motores de búsqueda, ya que nos permite encontrar documentos en los que aparece la palabra.
Puede utilizar el aprendizaje automático supervisado para crear este índice invertido.
Una diferencia más:
El manejo de actualizaciones con el índice invertido es costoso en comparación con el índice a plazo.
El índice de avance maneja las actualizaciones fácilmente reflejando los cambios solo en el índice del documento correspondiente, mientras que en el índice invertido, el mismo cambio tiene que reflejarse en múltiples posiciones en el índice invertido.