2010-12-09 9 views
0

Je souhaite indexer des données à travers quelques bases de données de notre application dans le lucene. comment structurer l'index? index par table de sorte que les colonnes sont les champs et les données sont les valeurs? ou l'index par base de données, les colonnes de la table des variables avec diff champs de lucene? si non alors comment structurer l'index de sorte que la recherche et la maintenance ne soient pas compliquées? en supposant 100 tables par bases de données et 10K lignes par table.Indexation des enregistrements de base de données dans lucene

Répondre

0

Cela dépend complètement des données sous-jacentes, et comment vous voulez l'interroger, et sans le savoir, il est impossible de fournir une réponse définitive.

Si votre schéma de base de données est normalisé, vous pouvez le dénormaliser pour créer un enregistrement, constitué de données de table provenant de plusieurs tables, par document.

Un autre facteur déterminant les champs que vous affectez au document sera la manière dont vous souhaitez interroger les données.

Par exemple, étant donné le schéma normalisé suivant:

TABLE:AUTHOR  COLS:AUTHOR_ID,NAME 
TABLE:BOOKS   COLS:BOOK_ID,TITLE,CONTENT 
TABLE:AUTHOR_BOOKS COLS:AUTHOR_ID,BOOK_ID 

Vous pouvez indexer un seul document par auteur/livre:

Document (field1:author, field2:title, field3:content) 

Cela vous permettra de rechercher des livres correspond soit par auteur , titre ou contenu.

Questions connexes