Index: main/java/com/xpn/xwiki/plugin/lucene/ObjectData.java
===================================================================
--- main/java/com/xpn/xwiki/plugin/lucene/ObjectData.java	(.../platform/xwiki-plugins/trunk/lucene/src)	(revision 12354)
+++ main/java/com/xpn/xwiki/plugin/lucene/ObjectData.java	(.../curriki/trunk/plugins/lucene/src)	(revision 12354)
@@ -164,6 +164,7 @@
             final String ft = getContentAsText(baseObject, propertyName, context);
             if (ft != null) {
                 luceneDoc.add(new Field(fieldFullName, ft, Field.Store.YES, Field.Index.TOKENIZED));
+                luceneDoc.add(new Field(fieldFullName + IndexFields.UNTOKENIZED, ft, Field.Store.NO, Field.Index.UN_TOKENIZED));
             }
         }
     }
@@ -182,15 +183,21 @@
                 // we index the key of the list
                 String fieldName = fieldFullName + ".key";
                 luceneDoc.add(new Field(fieldName, item.getId(), Field.Store.YES, Field.Index.TOKENIZED));
+                luceneDoc.add(new Field(fieldName + IndexFields.UNTOKENIZED, item.getId(), Field.Store.NO, Field.Index.UN_TOKENIZED));
+
                 // we index the value
                 fieldName = fieldFullName + ".value";
                 luceneDoc.add(new Field(fieldName, item.getValue(), Field.Store.YES, Field.Index.TOKENIZED));
+                luceneDoc.add(new Field(fieldName + IndexFields.UNTOKENIZED, item.getValue(), Field.Store.NO, Field.Index.UN_TOKENIZED));
                 if (!item.getId().equals(item.getValue())) {
                     luceneDoc.add(new Field(fieldFullName, item.getValue(), Field.Store.YES, Field.Index.TOKENIZED));
+                    luceneDoc.add(new Field(fieldFullName + IndexFields.UNTOKENIZED, item.getValue(), Field.Store.NO, Field.Index.UN_TOKENIZED));
                 }
             }
+
             // we index both if value is not equal to the id(key)
             luceneDoc.add(new Field(fieldFullName, value, Field.Store.YES, Field.Index.TOKENIZED));
+            luceneDoc.add(new Field(fieldFullName + IndexFields.UNTOKENIZED, value, Field.Store.NO, Field.Index.UN_TOKENIZED));
         }
     }
 
Index: main/java/com/xpn/xwiki/plugin/lucene/IndexData.java
===================================================================
--- main/java/com/xpn/xwiki/plugin/lucene/IndexData.java	(.../platform/xwiki-plugins/trunk/lucene/src)	(revision 12354)
+++ main/java/com/xpn/xwiki/plugin/lucene/IndexData.java	(.../curriki/trunk/plugins/lucene/src)	(revision 12354)
@@ -131,6 +131,10 @@
                 documentTitle,
                 Field.Store.YES,
                 Field.Index.TOKENIZED));
+            luceneDoc.add(new Field(IndexFields.DOCUMENT_TITLE + IndexFields.UNTOKENIZED,
+                documentTitle,
+                Field.Store.NO,
+                Field.Index.UN_TOKENIZED));
         }
         luceneDoc.add(new Field(IndexFields.DOCUMENT_NAME,
             documentName,
@@ -149,12 +153,20 @@
                 author,
                 Field.Store.YES,
                 Field.Index.TOKENIZED));
+            luceneDoc.add(new Field(IndexFields.DOCUMENT_AUTHOR + IndexFields.UNTOKENIZED,
+                author,
+                Field.Store.NO,
+                Field.Index.UN_TOKENIZED));
         }
         if (creator != null) {
             luceneDoc.add(new Field(IndexFields.DOCUMENT_CREATOR,
                 creator,
                 Field.Store.YES,
                 Field.Index.TOKENIZED));
+            luceneDoc.add(new Field(IndexFields.DOCUMENT_CREATOR + IndexFields.UNTOKENIZED,
+                creator,
+                Field.Store.NO,
+                Field.Index.UN_TOKENIZED));
         }
 
         // UnStored fields: tokenized and indexed, but no reconstruction of
Index: main/java/com/xpn/xwiki/plugin/lucene/AttachmentData.java
===================================================================
--- main/java/com/xpn/xwiki/plugin/lucene/AttachmentData.java	(.../platform/xwiki-plugins/trunk/lucene/src)	(revision 12354)
+++ main/java/com/xpn/xwiki/plugin/lucene/AttachmentData.java	(.../curriki/trunk/plugins/lucene/src)	(revision 12354)
@@ -80,6 +80,7 @@
         super.addDataToLuceneDocument(luceneDoc, doc, context);
         if (filename != null) {
             luceneDoc.add(new Field(IndexFields.FILENAME, filename, Field.Store.YES, Field.Index.TOKENIZED));
+            luceneDoc.add(new Field(IndexFields.FILENAME + IndexFields.UNTOKENIZED, filename, Field.Store.NO, Field.Index.UN_TOKENIZED));
         }
     }
 
Index: main/java/com/xpn/xwiki/plugin/lucene/IndexFields.java
===================================================================
--- main/java/com/xpn/xwiki/plugin/lucene/IndexFields.java	(.../platform/xwiki-plugins/trunk/lucene/src)	(revision 12354)
+++ main/java/com/xpn/xwiki/plugin/lucene/IndexFields.java	(.../curriki/trunk/plugins/lucene/src)	(revision 12354)
@@ -115,6 +115,11 @@
     public static final String KEYWORDS = "kw";
 
     /**
+     * Marker for untokenized version of fields indexed
+     */
+    public static final String UNTOKENIZED = ".untokenized";
+
+    /**
      * Format for date storage in the index, and therefore the format which has to be used for date-queries.
      */
     public static final String DATE_FORMAT = "yyyyMMddHHmm";
