--- a/src/rcldb/rcldoc.h
+++ b/src/rcldb/rcldoc.h
@@ -16,12 +16,14 @@
  */
 #ifndef _RCLDOC_H_INCLUDED_
 #define _RCLDOC_H_INCLUDED_
-/* @(#$Id: rcldoc.h,v 1.2 2007-01-17 13:53:41 dockes Exp $  (C) 2006 J.F.Dockes */
+/* @(#$Id: rcldoc.h,v 1.3 2007-06-19 08:36:24 dockes Exp $  (C) 2006 J.F.Dockes */
 
 #include <string>
+#include <map>
 
 #ifndef NO_NAMESPACES
 using std::string;
+using std::map;
 namespace Rcl {
 #endif
 
@@ -47,12 +49,16 @@
                          // Possibly set by handler
     string origcharset;  // Charset we transcoded from (in case we want back)
                          // Possibly set by handler
-    string title;        // Possibly set by handler
-    string author;       // Possibly set by handler
-    string keywords;     // Possibly set by handler
-    string abstract;     // Possibly set by handler
-    bool   syntabs;      // true if abstract is just the top of doc, not an 
-                         // explicit document attribute
+
+    // A map for textual metadata like, author, keywords, abstract, title
+    // Entries possibly set by handler. If a field-name to prefix translation 
+    // exists, the terms will be indexed with a prefix.
+    map<string, string> meta; 
+
+    // Attribute for the "abstract" entry. true if it is just the top
+    // of doc, not a native document attribute
+    bool   syntabs;      
+
     string fbytes;       // File size. Set by Db::Add
     string dbytes;       // Doc size. Set by Db::Add from text length
 
@@ -72,9 +78,7 @@
 	fmtime.erase();
 	dmtime.erase();
 	origcharset.erase();
-	title.erase();
-	keywords.erase();
-	abstract.erase();
+	meta.clear();
 	syntabs = false;
 	fbytes.erase();
 	dbytes.erase();