44 votes

Lucene Indexing: Explication des modes de stockage et d'indexation

Je pense que je ne suis toujours pas à comprendre les options d'indexation lucene.

Les options suivantes sont

  • Magasin.Oui
  • Magasin.Pas de

et

  • Index.Sous forme de jeton
  • Index.Un_Tokenized
  • Index.Pas de
  • Index.No_Norms

Je ne comprends pas vraiment l'option store. Pourquoi voudriez-vous jamais eu envie de ne PAS les stocker votre domaine?
La segmentation est de diviser le contenu et la suppression du bruit des mots/séparateurs (comme "et", "ou", etc)
Je n'ai pas la moindre idée de ce que les normes pourraient l'être. Comment sont segmentées en valeurs stockées?
Qu'advient-il si je stocker une valeur "ma chaîne" dans "fieldName"? Pourquoi n'est pas une requête

fieldName:ma chaîne

retourne rien?

84voto

dustyburwell Points 4501

Magasin.Oui

Signifie que la valeur du champ sera stocké dans l'index

Magasin.Pas de

Signifie que la valeur du champ sera PAS être stockées dans l'index

Magasin.Oui/non n'affecte pas l'indexation ou la recherche lucene. Il dit juste lucene si vous voulez agir comme une banque de données pour les valeurs dans le champ. Si vous utilisez le Magasin.Oui, puis lors de la recherche, la valeur de ce champ sera inclus dans le résultat de votre recherche de Documents.

Si vous stockez vos données dans une base de données, et en utilisant uniquement l'index Lucene pour la recherche, alors vous pouvez sortir avec Store.Pas sur l'ensemble de vos champs. Toutefois, si vous êtes à l'aide de l'index de stockage, alors vous aurez envie de Magasin.Oui.

Index.Sous forme de jeton

Signifie que le champ sera sous forme de jeton lorsqu'il est indexé (tu as un). Ceci est utile pour les longs champs à plusieurs mots.

Index.Un_Tokenized

Signifie que le champ ne sera pas analysé et stocké comme une valeur unique. Ceci est utile pour des mots clés ou de mots et quelques courts multi-champs word.

Index.Pas de

Exactement ce qu'il dit. Le champ ne sera pas indexé et donc incompréhensibles. Toutefois, vous pouvez utiliser l'Index.Pas de avec Magasin.Oui pour stocker une valeur que vous ne voulez pas faire l'objet de recherches.

Index.No_Norms

De même que l'Indice.Un_Tokenized sauf pour quelques octets sera sauvé par ne pas stocker certains de Normalisation des données. Ces données sont ce qui est utilisé pour stimuler et de longueur de champ de la normalisation.

Pour plus de lecture, la lucene documentation javadoc sont inestimables (actuelle de l'API de la version 4.4.0):

Pour votre dernière question, au sujet de votre requête n'est pas de retourner quoi que ce soit, sans en savoir plus sur la façon dont vous êtes l'indexation de ce domaine, je dirais que c'est parce que votre fieldName qualificatif est seulement attaché à ma chaîne. Faire la recherche de la phrase "ma chaîne" vous souhaitez:

fieldName:"ma chaîne"

Une recherche à la fois les mots "mon" et "string" dans le nom de champ champ:

fieldName:(ma chaîne)

2voto

Ian Durkan Points 575

Au cas où des utilisateurs de Java tomberaient sur cela, les mêmes options que dans la réponse de mars 2009 existaient toujours dans la bibliothèque Lucene 4.6.0 mais étaient obsolètes. Le moyen actuel de définir ces options est via FieldType .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X