Na engenharia de software, criamos índices o tempo todo (por exemplo, em bancos de dados), mas também ouço muitas pessoas falarem sobre índices invertidos. Existe algo fundamentalmente diferente entre os dois? Eles soam como a mesma coisa.
Na engenharia de software, criamos índices o tempo todo (por exemplo, em bancos de dados), mas também ouço muitas pessoas falarem sobre índices invertidos. Existe algo fundamentalmente diferente entre os dois? Eles soam como a mesma coisa.
Respostas:
Um uso comum é "... para permitir uma pesquisa rápida de texto completo."
Os dois tipos denotam direcionalidade . Um leva você para frente no índice e o outro leva você para trás (o inverso) através do índice. É isso aí. Não há mistério para descobrir aqui. Caso contrário, os dois tipos são idênticos, é apenas uma questão de quais informações você tem e, como resultado, quais informações você está tentando encontrar.
Para responder à sua pergunta, não acho que haja realmente uma maneira de saber por que o uso é o que é hoje. A única razão pela qual é importante definir qual é forward
e qual é o significado.inverted
é para que todos possamos ter uma conversa sobre eles e todos saibam de que direção estamos falando. Pense nos termos "esquerda" e "direita": eles são relativos. O que não importa, exceto que todos precisam concordar em qual é "esquerdo" e qual é "certo" para que as palavras tenham significado. Se, como cultura, decidíssemos virar para a esquerda e para a direita, você teria o mesmo problema em descobrir o que é uma "curva à direita" versus uma "curva à esquerda", uma vez que o significado acordado mudou. No entanto, a nomenclatura é arbitrária,
Em seu comentário em que você pergunta "por favor, não defina apenas os termos", você está perdendo o ponto e acho que está apenas ficando preso ao texto quando não há absolutamente nenhuma diferença entre eles.
Para o benefício de futuros leitores, irei agora fornecer vários exemplos de índice "avançado" e "invertido":
Se você está pensando que o inverso de um índice é algo como o inverso de uma função em matemática , onde o inverso é uma coisa especial que tem uma forma diferente, você está enganado: esse não é o caso aqui.
Em um mecanismo de busca, você tem uma lista de documentos (páginas em sites), onde você insere algumas palavras-chave e obtém os resultados.
Um índice de encaminhamento (ou apenas índice) é a lista de documentos e quais palavras aparecem neles. No exemplo da pesquisa na web, o Google rastreia a web, construindo a lista de documentos, descobrindo quais palavras aparecem em cada página.
O índice invertido é a lista de palavras e os documentos nos quais aparecem. No exemplo de pesquisa na web, você fornece a lista de palavras (sua consulta de pesquisa) e o Google produz os documentos (links de resultados de pesquisa).
Ambos são índices - é apenas uma questão de qual direção você está indo. Encaminhar é de documentos-> para-> palavras, invertido é de palavras-> para-> documentos.
Outro exemplo é uma consulta DNS (que pega um nome de host e retorna um endereço IP) e uma consulta reversa (que pega um endereço IP e fornece o nome do host).
O índice no final de um livro é na verdade um índice invertido , conforme definido pelos exemplos acima - uma lista de palavras e onde encontrá-las no livro. Em um livro, o índice analítico é como um índice de encaminhamento : é uma lista de documentos (capítulos) que o livro contém, exceto em vez de listar as palavras nessas seções, o índice analítico apenas fornece um nome / descrição geral do que contidas nesses documentos (capítulos).
O índice de encaminhamento no seu telefone celular é sua lista de contatos e quais números de telefone (celular, residencial, comercial) estão associados a esses contatos. O índice invertido é o que permite inserir manualmente um número de telefone, e quando você clica em "discar", vê o nome da pessoa, ao invés do número, porque seu telefone pegou o número de telefone e encontrou o contato associado a ele.
Eles o chamaram de invertido apenas porque já existe um índice direto. Tomemos o exemplo do motor de busca, composto por duas partes: a primeira parte é "web crawler e parser" que constrói um índice de documento a palavra, a segunda parte é banco de dados de busca que constrói um índice de palavra a documento. Como o primeiro índice existe, naturalmente chamamos o segundo índice de índice invertido.
Se você nomear o TOC (Tabela de conteúdo) de um livro como índice, deverá chamar o índice no final do livro de "índice invertido". Ou, por outro lado, você pode chamar o TOC de índice invertido.
inverted index
, embora todos os índices normais em nossa vida já sejam usados como inverted
.
normalmente, ao falar sobre índice, você se refere a alguns cálculos adicionados ou resultados armazenados de procedimentos que foram feitos para acelerar a aplicação (por exemplo, MySQL ou outro RDBMS Consulte a documentação do MySQL ). A indexação também pode estar relacionada ao armazenamento em cache, etc.
O índice invertido cria um arquivo com uma estrutura que se destina principalmente à pesquisa (texto completo).
O índice invertido consiste em dois arquivos principais:
No vocabulário, palavras comuns são extraídas do texto (é claro, depois de filtrar palavras da lista negra, como pronomes). O arquivo de ocorrências mantém a conexão entre palavras e documentos (palavra1 aparece em doc1 e doc2, não em doc3). É representado na forma de uma matriz.
Na imagem acima é mostrado o processo de criação dos dois arquivos mencionados.
Se você estiver mais interessado nesta problemática, posso recomendar um ótimo livro escrito por Ricardo Yated - Modern Information Retrieval ( Veja na Amazon ) - sobre a página 200, eu acho.
Espero que ajude :-)
a normalidade já diferenciou maravilhosamente entre um índice direto e um invertido, mas para a questão de por que um é chamado de índice direto e o outro de índice invertido, talvez seja por isso que eles são chamados assim ---
Tomando o exemplo de rastreamento e indexação do mecanismo de pesquisa (ou construção de índice para um livro), um índice de avanço pode ser construído simultaneamente enquanto você está rastreando as páginas da web (ou lendo o livro) ou avançando . Portanto, se você tem 10 páginas da web para rastrear (ou 10 capítulos em um livro), você pode rastrear a primeira página da web (ler o primeiro capítulo) e, em seguida, fazer uma lista de palavras que aparecem na página da web (palavras que aparecem no capítulo) e continuar esse processo para outras páginas da web (outros capítulos), então, no momento em que você rastrear todas as 10 páginas da web (leia todos os 10 capítulos), seu índice de encaminhamento estará completo com cada página da web (capítulo) apontando para uma lista de palavras que contém .
Mas para fazer um índice invertido, você precisa rastrear todas as 10 páginas da web (leia os 10 capítulos) e, em seguida, pegar cada palavra de cada lista de documentos e descobrir quais documentos contêm essa palavra. Portanto, é como voltar atrás depois de rastrear as páginas da web (leia os capítulos do livro) . Portanto, é chamado de índice invertido.
Esta é apenas minha especulação.
Existem muitos tipos de índice. Por exemplo, B-tree, R-tree, hash ... Para diferentes propósitos, devemos escolher o índice correto.
O índice invertido é especial. Índice invertido geralmente usado no mecanismo de pesquisa de texto completo. Usando o índice invertido, podemos descobrir a localização de uma palavra em um documento (ou conjunto de documentos) o mais rápido possível. Pense no limite de memória e cpu, outro índice não pode terminar este trabalho.
Você pode ler o documento lucene para mais detalhes. É um mecanismo de busca de código aberto. http://lucene.apache.org/java/docs/index.html
O termo "Índice de palavras invertidas" refere-se à mudança no relacionamento de um único documento contendo muitas palavras, para cada palavra única contendo (ou identificando) uma lista de muitos documentos. Isso é efetivamente pegar um relacionamento de um para muitos (documentos para palavras) e invertê-lo (ou revertê-lo) de forma que agora exista um novo relacionamento de um para muitos "Invertido", que é cada palavra única relacionada com muitos Documentos (ou seja, todos os que contêm essa palavra). Sua origem é realmente simples, e o termo "índice invertido" foi usado para descrever índices manuais do mesmo tipo muito antes de os computadores e a indexação eletrônica de alta velocidade sequer existirem (sim, admito, sou um programador velho, quase com idade suficiente para ter considerado Grace Hopper uma "doce jovem" idade apropriada para cortejar de volta quando COBOL era uma linguagem novinha em folha). Por favor, não descarte nossos geezers ainda, pois ocasionalmente podemos fornecer um ou dois dados históricos úteis, e possivelmente valiosos - quando nossa RAM pessoal ainda está funcionando, é claro. [sorriso]
em índices invertidos, temos a seguinte forma:
palavra1-> lista de documentos em que ocorre (ordem de classificação)
palavra2-> lista de documentos em que ocorre (ordem de classificação)
É muito útil para o processamento de consultas do mecanismo de pesquisa, pois nos permite encontrar os documentos em que a palavra ocorre.
Você pode usar a aprendizagem de máquina supervisionada para construir este índice invertido.
Mais uma diferença:
O tratamento de atualizações com o índice invertido é caro em comparação com o índice direto.
O índice progressivo lida com atualizações facilmente refletindo as mudanças apenas no índice do documento correspondente, enquanto no índice invertido, a mesma mudança deve refletir em várias posições no índice invertido.