2010-03-12 32 views
4
  1. Qu'est-ce que l'indexation?
  2. Qu'est-ce que le texte intégral?

Je connais les réponses aux deux questions, mais je ne peux pas exposer ces réponses à la manière exacte à un intervieweur:définir l'indexation mysql

  • indexation signifie quelque chose comme index dans le livre
  • signifie pour la recherche du texte intégral string

Pouvez-vous me donner une définition très simple pour chacune de ces questions?

+0

Une raison particulière pour laquelle cela fait référence à mySQL? En eux-mêmes, les concepts Index et FullText sont génériques pour toutes les choses SQL et au-delà. Existe-t-il une attente implicite pour donner des détails spécifiques à mySQL? – mjv

+0

travaille sur mysql pour que je sélectionne le tag mysql. – Bharanikumar

Répondre

3

Un index dans mysql est un mappage de chaque valeur dans une colonne (ou des valeurs dans un ensemble de colonnes) vers les lignes contenant cette valeur dans cette colonne (ou ces valeurs dans l'ensemble des colonnes).

Un index de texte intégral sur une colonne est un mappage de chaque mot (généralement séparé par des espaces) vers l'ensemble des lignes qui contient ce mot.

index normal: id: 1 "bar" id: 2 "foo baz"

recherche "foo" -> aucun résultat. recherche "foo baz" -> ramer id: 2 recherche "bar" -> ramer id: 1

index du texte intégral: id: 1 "bar" id: 2 "foo baz"

recherche "foo" -> ramer id: 2 recherche "foo baz" -> ramer id: 2 recherche "bar" -> rangée avec id: 1

+0

Salut si je crée l'index et le texte intégral pour un seul champ, ce qui se passera, qui fonctionnera indexation ou fulltext, si ma question n'est pas claire plz dites-moi .. – Bharanikumar

+0

si mon moteur est innodb signifie, je ne peux pas utiliser le fulltext , alors comment seul index est le chemin ... Tel moi maintenant qui est efficace, index ou fulltext – Bharanikumar

+0

@Bharanikumar: "lequel travaillera indexation ou fulltext" Cela dépend. En supposant que vous avez un index normal et un index fulltext sur la colonne 'x': Si vous utilisez' SELECT x, y, z FROM table WHERE MATCH (x) CONTRE ('searchterm' IN BOOLEAN MODE) ', l'index fulltext sera utilisé . Si vous utilisez 'SELECT x, y, z FROM table WHERE x LIKE 'searchterm%'', l'index normal sera utilisé. – Piskvor

6

indexation, est le processus de création d'index. Les index sont des structures qui permettent à SQL (ou plus généralement un SGBD ou moteur de recherche) de localiser, de manière très efficace, enregistrements basés sur la valeur d'un (ou de plusieurs) des champs qu'ils contiennent. Par exemple, une base de données peut inclure à la table contenant des dossiers d'étudiant, avec leur identification d'étudiant, leur nom, date de naissance, numéro de téléphone ... En créant un index sur le numéro de téléphone, nous pouvons rechercher l'étudiant basé sur un numéro de téléphone. En l'absence d'un index, le système aurait trouvé les mêmes enregistrements, mais cette opération aurait été effectuée en regardant chaque enregistrement et en comparant avec le numéro de téléphone désiré.


FullText indexation est le processus de création d'un index pour une (ou plusieurs champs qui contiennent du texte). Contrairement aux index réguliers qui sont basés sur la comparaison de la valeur complète du champ (ou éventuellement d'une expression régulière simple) avec la valeur de recherche souhaitée, un index FullText peut localiser un enregistrement basé sur les mots trouvés dans le champ. Par exemple, une base de données bibliographique peut contenir des notices décrivant des livres, avec des champs tels que ISBN, auteur, titre, type, prix ...). Un index fulltext (parfois appelé "catalogue") sur le champ Titre, permettrait de localiser, de manière efficace, le livre intitulé "Le vieil homme et la mer" lors de la recherche par le mot "homme".

Les moteurs de texte intégral ont généralement une «compréhension» intégrée et paramétrable des concepts linguistiques relatifs au texte. Par exemple, le "mot de bruit" (aussi appelé "mots vides") est un mot fréquemment trouvé dans le texte (exemple "le", "et", "de", "in", en anglais). minimiser la taille de l'index et rendre les recherches avec des mots plus sélectifs plus efficaces. En outre, le moteur de texte intégral peut être conscient des différentes formes grammaticales d'un mot, disons la forme singulière et plurielle des mots (comme Pouces et pouces, Pied et Pieds, Chat et Chats), ou la conjugaison des verbes (comme Catch, Attraper et capturé ou interprété, interprété, interprété). Grâce à cette prise de conscience grammaticale, le moteur FullText peut (si cela lui est demandé) localiser des mots même s'ils ne correspondent pas exactement aux critères de recherche.
Le moteur FullText expose également généralement une langue/syntaxe de recherche qui permet aux utilisateurs de spécifier des éléments particuliers de la recherche souhaitée. Par exemple pour rechercher le mot "mer" dans les 5 mots du mot "homme". Ou trouver le mot « lac » ou « océan » et le mot « eau », etc.

+0

Pouvez-vous fournir un lien indiquant où vous avez trouvé que les recherches d'indexation FullText correspondent à des formes grammaticales? –

+1

@Abe Miessler: pour mySQL (qui semble être l'objet de cette question), ce type de fonctionnalité est fourni via des plug-ins d'analyseur (http://dev.mysql.com/doc/refman/5.4/fr /full-text-plugins.html), par exemple dans le plugin 'mnoGoSearch' (http://www.mnogosearch.org/doc/msearch-udmstemmer.html). Des fonctionnalités similaires sont également trouvées dans MSSQL, et supportées par Word Breakers et Stemmers, voir par exemple http://msdn.microsoft.com/en-us/library/ms142566.aspx – mjv

0
  1. indexation signifie que, avec les données que vous indexez, il y a un moyen d'obtenir à ces données de manière efficace. Ce raccourci est un arbre B. Les colonnes indexées sont plus rapides à lire (déjà expliquées) mais plus lentes à écrire car l'arbre B doit être mis à jour.