web-dev-qa-db-fra.com

Quelle est la différence entre un index inversé et un ancien index simple?

En génie logiciel, nous créons tout le temps des index (par exemple, dans des bases de données) mais j'entends aussi beaucoup de gens parler d'indices inversés. Y a-t-il quelque chose de fondamentalement différent entre les deux? Ils sonnent comme la même chose.

82
guidoism

Une utilisation courante est "... pour permettre une recherche rapide en texte intégral."

Les deux types dénotent la directivité . L'un vous emmène en avant à travers l'index, et l'autre vous emmène en arrière (l'inverse) à travers l'indice. C'est ça. Il n'y a aucun mystère à découvrir ici. Sinon, les deux types sont identiques, c'est juste une question de savoir quelles informations vous avez , et par conséquent quelles informations vous essayez de trouver.

Pour répondre à votre demande, je ne pense pas qu'il existe réellement un moyen de savoir pourquoi l'utilisation est ce qu'elle est aujourd'hui. La seule raison pour laquelle il est important de définir laquelle est forward et laquelle est inverted est pour que nous puissions tous avoir une conversation à leur sujet, et tout le monde sait de quelle direction nous parlons. Pensez aux termes "gauche" et "droite": ils sont relatifs. Ce qui n'a pas d'importance, sauf que tout le monde doit s'accorder sur celui qui est "gauche" et celui qui est "droit" pour que les mots aient un sens. Si, en tant que culture, nous avons décidé de retourner à gauche et à droite, alors vous auriez le même problème pour savoir ce qu'est un "virage à droite" par rapport à un "virage à gauche" puisque la signification convenue avait changé. Cependant, la dénomination est arbitraire, alors laquelle est celle qui (en soi) n'a pas d'importance - ce qui compte, c'est que nous sommes tous d'accord sur le sens.

Dans votre commentaire où vous demandez: "s'il vous plaît, ne vous contentez pas de définir les termes", vous manquez le point, et je pense que vous êtes simplement accroché au libellé alors qu'il n'y a absolument aucune différence entre eux.


Pour le bénéfice des futurs lecteurs, je vais maintenant fournir plusieurs exemples d'index "avant" et "inversé":

Exemple 1: recherche sur le Web

Si vous pensez que l'inverse d'un indice est quelque chose comme l'inverse d'une fonction en mathématiques , où l'inverse est une chose spéciale qui a une forme différente, alors vous vous trompez: ce n'est pas le cas ici.

Dans un moteur de recherche, vous avez une liste de documents (pages sur des sites Web), où vous entrez des mots clés et obtenez des résultats.

Un index avant (ou simplement index) est la liste des documents , et quels mots y apparaissent. Dans l'exemple de recherche sur le Web, Google explore le Web, créant la liste des documents, déterminant les mots qui apparaissent sur chaque page.

index inversé est la liste de mots , et les documents dans lesquels ils apparaissent. Dans l'exemple de recherche sur le Web, vous fournissez la liste des mots (votre requête de recherche) et Google produit les documents (liens des résultats de la recherche).

Ce sont deux index - c'est juste une question de savoir dans quelle direction vous allez. Transférer est de documents-> à-> mots, inversé est de mots-> à-> documents.

Exemple 2: DNS

Un autre exemple est une recherche DNS (qui prend un nom d'hôte et renvoie une adresse IP) et une recherche inversée (qui prend une adresse IP et vous donne le nom d'hôte).

Exemple 3: un livre

L'index à l'arrière d'un livre est en fait un index inversé , comme défini par les exemples ci-dessus - une liste de mots, et où les trouver dans le livre. Dans un livre, la table des matières est comme un index vers l'avant : c'est une liste de documents (chapitres) que le livre contient, sauf au lieu de lister les mots dans ces sections, la table des matières donne juste un nom/description générale de ce qui est contenu dans ces documents (chapitres).

Exemple 4: votre téléphone portable

L'index de transfert de votre téléphone portable est votre liste de contacts et les numéros de téléphone (cellulaire, domicile, travail) associés à ces contacts. L'index inversé est ce qui vous permet d'entrer manuellement un numéro de téléphone, et lorsque vous appuyez sur "composer", vous voyez le nom de la personne, plutôt que le numéro, car votre téléphone a pris le numéro de téléphone et vous a trouvé le contact qui lui est associé.

194
jefflunt

Ils l'ont appelé inversé juste parce qu'il y a déjà un indice avancé. Prenons l'exemple du moteur de recherche, il se compose de deux parties: la première partie est "le robot et l'analyseur Web" qui construisent un index du document vers Word, la deuxième partie est la base de données de recherche qui construit un index de Word vers le document. En raison de l'existence du premier index, nous appelons naturellement le deuxième index comme index inversé.

Si vous nommez la table des matières (TOC) d'un livre comme index, vous devez appeler l'index à la fin du livre comme "index inversé". Ou, de l'autre côté, vous pouvez appeler la table des matières comme index inversé.

21
xeranic

en général, lorsque vous parlez d'index, vous voulez dire des calculs supplémentaires ou des résultats stockés des procédures qui ont été effectuées afin d'accélérer l'application (par exemple MySQL ou un autre SGBDR consultez MySQL the docs ). L'indexation peut également être liée à la mise en cache, etc.

L'index inversé crée un fichier dont la structure est principalement destinée à la recherche (texte intégral).

L'index inversé se compose de deux fichiers principaux:

  • Vocabulaire
  • Occurrences

Dans le vocabulaire, il y a des mots courants extraits du texte (bien sûr, après avoir filtré les mots de la liste noire comme les pronoms). Le fichier d'occurrences contient la connexion entre les mots et les documents (Word1 apparaît dans doc1 et doc2, pas dans doc3). Il est représenté sous forme de matrice.

Indexing process - inverted index

Dans l'image ci-dessus est montré le processus de création des deux fichiers mentionnés.

Si vous êtes plus intéressé par cette problématique, je peux vous recommander un excellent livre écrit par Ricardo Yated - Modern Information Retrieval ( Voir sur Amazon ) - à propos de la page 200 je pense.

J'espère que ça aide :-)

6
Bery

normalocity a déjà merveilleusement différencié entre un index direct et un index inversé mais pour la question de savoir pourquoi l'un est appelé un index direct et l'autre un index inversé, c'est peut-être pourquoi ils sont appelés ainsi ---

Prenant l'exemple de l'exploration et de l'indexation des moteurs de recherche (ou de la création d'un index pour un livre), un index avancé peut être créé simultanément pendant que vous explorez les pages Web (ou lisez le livre) ou à l'avenir . Donc, si vous avez 10 pages Web à explorer (ou 10 chapitres dans un livre), vous pouvez explorer la première page Web (lire le premier chapitre) puis faire une liste de mots qui apparaissent dans la page Web (mots qui apparaissent dans le chapitre) et continuer ce processus pour d'autres pages Web (autres chapitres) donc au moment où vous avez exploré toutes les 10 pages Web (lisez les 10 chapitres) votre index vers l'avant est terminé, chaque page Web (chapitre) pointant vers une liste de mots qu'il contient .

Mais pour créer un index inversé, vous devez explorer toutes les 10 pages Web (lire les 10 chapitres), puis prendre chaque mot de chaque liste de documents et déterminer quels documents contiennent ce mot. C'est donc comme revenir en arrière une fois que vous avez exploré les pages Web (lire les chapitres du livre). Donc, c'est ce qu'on appelle un index inversé.

Ce n'est que ma spéculation.

6
lovesh

Il existe de nombreux types d'index. Par exemple, B-tree, R-tree, hash ... À différentes fins, nous devons choisir un index correct.

L'index inversé est spécial. Index inversé généralement utilisé dans le moteur de recherche de texte intégral. Utilisez l'index inversé, nous pouvons trouver la localisation d'un mot dans un document (ou un ensemble de documents) le plus rapidement possible. Pensez à la limite de mémoire et de processeur, d'autres index ne peuvent pas terminer ce travail.

Vous pouvez lire le document lucene pour plus de détails. C'est un moteur de recherche open source. http://lucene.Apache.org/Java/docs/index.html

4
virushuo

dans les index inversés, nous avons la forme suivante:

Word1-> liste des documents dans lesquels il se produit (ordre trié)

Word2-> liste des documents dans lesquels il se produit (ordre trié)

Il est très utile pour le traitement des requêtes des moteurs de recherche car il nous permet de trouver des documents dans lesquels Word se trouve.

Vous pouvez utiliser l'apprentissage automatique supervisé pour créer cet index inversé.

2
Programmer

Le terme "Index des mots inversés" fait référence au changement de relation d'un document unique contenant plusieurs mots, à chaque mot unique contenant (ou identifiant) une liste de plusieurs documents. Cela prend effectivement une relation un-à-plusieurs (Docs to Words) et l'inverse (ou l'inverse) de telle sorte qu'une nouvelle relation un-à-plusieurs "inversée" existe maintenant, qui est chaque mot unique relatif à plusieurs. Documents (c'est-à-dire tous ceux qui contiennent ce mot). It's Origin est vraiment aussi simple que cela, et le terme "index inversé" a été utilisé pour décrire les index manuels du même type bien avant même que les ordinateurs et l'indexation électronique à grande vitesse (oui, certes, je suis un vieux programmeur geezer, presque assez vieux pour avoir considéré Grace Hopper comme une "jeune fille douce" (âge approprié pour courtiser quand COBOL était une nouvelle langue brillante). S'il vous plaît, ne nous jetez pas pour le moment, car nous pouvons parfois fournir un ou deux bits historiques utiles, voire précieux, lorsque notre personnel RAM fonctionne toujours, c'est-à-dire. [sourire]

2
user1009

Encore une différence:

La gestion des mises à jour avec l'index inversé coûte cher par rapport à l'index direct.

L'index vers l'avant gère facilement les mises à jour en reflétant les modifications uniquement dans l'index de document correspondant, tandis que dans l'index inversé, le même changement doit se refléter dans plusieurs positions à travers l'index inversé.

0
Siva Kumar