2013-09-03 4 views
4

J'ai utilisé Luke comme quatre fois par an au cours des trois dernières années. Je ne le casse que quand j'en ai besoin. Un concept que je n'ai jamais compris est la raison pour laquelle seules les valeurs de certains champs sont affichées. Je peux interroger ces champs "vides" pour les valeurs attendues et obtenir les résultats attendus, mais Luke ne les affiche jamais. Je suppose qu'il me manque quelque chose de fondamental et d'évident, mais ce n'est pas si évident pour moi.Luke Où sont mes valeurs de champs?

Exemple onglet Recherche:

enter image description here

Exemple onglet Documents:

enter image description here

Répondre

2

Lorsqu'un programme crée un Lucene document, il pourrait dire Lucene de conserver ou non la valeur du champ ou pas. Voir, par exemple, l'argument stored au constructeur StringField. Si la valeur n'est pas stockée, elle peut être recherchée, mais les octets d'origine de la valeur ne sont pas sauvegardés dans l'index, puisqu'ils ne sont pas requis ni utilisés par la recherche.

Un motif typique avec, disons, http://www.elasticsearch.org/ est de stocker le JSON d'origine dans a single field et de ne pas stocker les champs réellement indexés. De cette façon, l'application qui travaille avec les données récupérées peut utiliser son format de données natif et ne doit pas être au courant de Lucene et de son document de valeur clé plate.

+0

Cela expliquerait tous les Field.Store.NO partout dans notre code d'indexation. Merci. – Dzejms

+3

@Dzejms Dans l'onglet Documents, vous pouvez essayer de cliquer sur le bouton "Reconstruire et éditer". Luke tentera de reconstruire des champs non stockés dans l'index. C'est, forcément, un meilleur effort, mais pourrait aider à voir ce qui est dans l'indice plus clairement. – femtoRgon