diff --git a/solr-conf/../../../contrib/search_api_solr/schema.xml b/solr-conf/schema-solr3x.xml
index 0971ef6..c66174c 100644
--- a/solr-conf/../../../contrib/search_api_solr/schema.xml
+++ b/solr-conf/schema-solr3x.xml
@@ -10,7 +10,7 @@
  http://wiki.apache.org/solr/SchemaXml
 -->
 
-<schema name="search-api-1.0" version="1.2">
+<schema name="drupal-3.0-beta16-solr3" version="1.3">
     <!-- attribute "name" is the name of this schema and is only used for display purposes.
          Applications should change this to reflect the nature of the search collection.
          version="1.2" is Solr's version number for the schema syntax and semantics.  It should
@@ -34,10 +34,12 @@
        limits compression (if enabled in the derived fields) to values which
        exceed a certain size (in characters).
     -->
-    <fieldType name="string" class="solr.StrField" indexed="true" stored="true" sortMissingLast="true" omitNorms="true"/>
+    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
 
     <!-- boolean type: "true" or "false" -->
-    <fieldType name="boolean" class="solr.BoolField" indexed="true" stored="true" sortMissingLast="true" omitNorms="true"/>
+    <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
+    <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
+    <fieldtype name="binary" class="solr.BinaryField"/>
 
     <!-- The optional sortMissingLast and sortMissingFirst attributes are
          currently supported on types that are sorted internally as strings.
@@ -52,15 +54,11 @@
          field first in an ascending sort and last in a descending sort.
     -->
 
-
-    <!-- numeric field types that store and index the text
-         value verbatim (and hence don't support range queries, since the
-         lexicographic ordering isn't equal to the numeric ordering) -->
-    <fieldType name="integer" class="solr.IntField" omitNorms="true"/>
-    <fieldType name="long" class="solr.LongField" omitNorms="true"/>
-    <fieldType name="float" class="solr.FloatField" omitNorms="true"/>
-    <fieldType name="double" class="solr.DoubleField" omitNorms="true"/>
-
+    <!-- numeric field types that can be sorted, but are not optimized for range queries -->
+    <fieldType name="integer" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+    <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+    <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
 
     <!--
       Note:
@@ -72,10 +70,10 @@
       but with a lexicographic ordering the same as the numeric ordering,
       so that range queries work correctly.
     -->
-    <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
-    <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>
-    <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/>
-    <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/>
+    <fieldType name="sint" class="solr.TrieIntField" sortMissingLast="true" omitNorms="true"/>
+    <fieldType name="slong" class="solr.TrieFloatField" sortMissingLast="true" omitNorms="true"/>
+    <fieldType name="sfloat" class="solr.TrieLongField" sortMissingLast="true" omitNorms="true"/>
+    <fieldType name="sdouble" class="solr.TrieDoubleField" sortMissingLast="true" omitNorms="true"/>
 
     <!--
      Numeric field types that index each value at various levels of precision
@@ -87,10 +85,10 @@
      indexed per value, slightly larger index size, and faster range queries.
      A precisionStep of 0 disables indexing at different precision levels.
     -->
-    <fieldType name="tint" class="solr.TrieIntField" indexed="true" stored="true" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
-    <fieldType name="tfloat" class="solr.TrieFloatField" indexed="true" stored="true" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
-    <fieldType name="tlong" class="solr.TrieLongField" indexed="true" stored="true" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
-    <fieldType name="tdouble" class="solr.TrieDoubleField" indexed="true" stored="true" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
+    <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
+    <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
+    <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
+    <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>
 
 
     <!-- The format for this date field is of the form 1995-12-31T23:59:59Z, and
@@ -116,7 +114,7 @@
     <fieldType name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>
 
     <!-- A Trie based date field for faster date range queries and date faceting. -->
-    <fieldType name="tdate" class="solr.TrieDateField" indexed="true" stored="true" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>
+    <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>
 
     <!-- solr.TextField allows the specification of custom text analyzers
          specified as a tokenizer and a list of token filters. Different
@@ -138,9 +136,10 @@
     -->
 
     <!-- A text field that only splits on whitespace for exact matching of words -->
-    <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
+    <fieldType name="text_ws" class="solr.TextField" omitNorms="true" positionIncrementGap="100">
       <analyzer>
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.LowerCaseFilterFactory"/>
       </analyzer>
     </fieldType>
 
@@ -151,34 +150,24 @@
         Duplicate tokens at the same position (which may result from Stemmed Synonyms or
         WordDelim parts) are removed.
         -->
-
-<!--
-    This is the field type this module will (unless manually changed) use for
-    all fulltext fields. Some filters are commented out because they are not
-    language-independent – i.e., SynonymFilterFactory, StopFilterFactory and
-    SnowballPorterFilterFactory. Manually remove the XML comment surrounding
-    those entries and configure them as necessary (editing synonyms.txt,
-    stopwords.txt and protwords.txt, and selecting the language used for
-    stemming) if you want to use them.
--->
-    <fieldType name="text" class="solr.TextField" indexed="true" stored="true" multiValued="true" positionIncrementGap="100">
+    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
       <analyzer type="index">
         <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <!--
+        <!-- in this example, we will only use synonyms at query time
         <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
         -->
         <!-- Case insensitive stop word removal.
           add enablePositionIncrements=true in both the index and query
           analyzers to leave a 'gap' for more accurate phrase queries.
         -->
-        <!-- <filter class="solr.StopFilterFactory"
+        <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="stopwords.txt"
                 enablePositionIncrements="true"
-                /> -->
-        <charFilter class="solr.HTMLStripCharFilterFactory" />
+                />
         <filter class="solr.WordDelimiterFilterFactory"
+                protected="protwords.txt"
                 generateWordParts="1"
                 generateNumberParts="1"
                 catenateWords="1"
@@ -186,21 +175,22 @@
                 catenateAll="0"
                 splitOnCaseChange="1"
                 preserveOriginal="1"/>
+        <filter class="solr.LengthFilterFactory" min="2" max="100" />
         <filter class="solr.LowerCaseFilterFactory"/>
-        <!-- <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> -->
-        <!--[[SnowballPorterFilterFactory]]-->
+        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
       <analyzer type="query">
         <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
         <tokenizer class="solr.WhitespaceTokenizerFactory"/>
-        <!-- <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> -->
-        <!-- <filter class="solr.StopFilterFactory"
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.StopFilterFactory"
                 ignoreCase="true"
                 words="stopwords.txt"
                 enablePositionIncrements="true"
-                />-->
+                />
         <filter class="solr.WordDelimiterFilterFactory"
+                protected="protwords.txt"
                 generateWordParts="1"
                 generateNumberParts="1"
                 catenateWords="0"
@@ -208,19 +198,55 @@
                 catenateAll="0"
                 splitOnCaseChange="1"
                 preserveOriginal="1"/>
+        <filter class="solr.LengthFilterFactory" min="2" max="100" />
         <filter class="solr.LowerCaseFilterFactory"/>
-        <!-- <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> -->
-        <!--[[SnowballPorterFilterFactory]]-->
+        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
       </analyzer>
     </fieldType>
 
+    <!-- An unstemmed text field - good if one does not know the language of the field -->
+    <fieldType name="text_und" class="solr.TextField" positionIncrementGap="100">
+      <analyzer type="index">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
+        <filter class="solr.WordDelimiterFilterFactory"
+                protected="protwords.txt"
+                generateWordParts="1"
+                generateNumberParts="1"
+                catenateWords="1"
+                catenateNumbers="1"
+                catenateAll="0"
+                splitOnCaseChange="0"/>
+        <filter class="solr.LengthFilterFactory" min="2" max="100" />
+        <filter class="solr.LowerCaseFilterFactory"/>
+      </analyzer>
+      <analyzer type="query">
+        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
+        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
+        <filter class="solr.StopFilterFactory"
+                ignoreCase="true"
+                words="stopwords.txt"
+                enablePositionIncrements="true"
+                />
+        <filter class="solr.WordDelimiterFilterFactory"
+                protected="protwords.txt"
+                generateWordParts="1"
+                generateNumberParts="1"
+                catenateWords="0"
+                catenateNumbers="0"
+                catenateAll="0"
+                splitOnCaseChange="0"/>
+        <filter class="solr.LengthFilterFactory" min="2" max="100" />
+        <filter class="solr.LowerCaseFilterFactory"/>
+      </analyzer>
+    </fieldType>
 
     <!-- Edge N gram type - for example for matching against queries with results
         KeywordTokenizer leaves input string intact as a single term.
         see: http://www.lucidimagination.com/blog/2009/09/08/auto-suggest-from-popular-queries-using-edgengrams/
    -->
-    <fieldType name="edge_n2_kw_text" class="solr.TextField" positionIncrementGap="100">
+    <fieldType name="edge_n2_kw_text" class="solr.TextField" omitNorms="true" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
@@ -247,7 +273,7 @@
          With various TokenFilterFactories to produce a sortable field
          that does not include some properties of the source text
       -->
-    <fieldType name="sortString" class="solr.TextField" indexed="true" stored="true" sortMissingLast="true" omitNorms="true">
+    <fieldType name="sortString" class="solr.TextField" sortMissingLast="true" omitNorms="true">
       <analyzer>
         <!-- KeywordTokenizer does no actual tokenizing, so the entire
              input string is preserved as a single token
@@ -262,7 +288,7 @@
         <!-- The PatternReplaceFilter gives you the flexibility to use
              Java Regular expression to replace any sequence of characters
              matching a pattern with an arbitrary replacement string,
-             which may include back refrences to portions of the original
+             which may include back refrences to portions of the orriginal
              string matched by the pattern.
 
              See the Java Regular Expression documentation for more
@@ -283,8 +309,20 @@
     <!-- since fields of this type are by default not stored or indexed, any data added to
          them will be ignored outright
      -->
-    <fieldtype name="ignored" stored="true" indexed="false" class="solr.StrField" />
+    <fieldtype name="ignored" stored="false" indexed="false" class="solr.StrField" />
+
+    <!-- Begin added types to use features in Solr 3.4+ -->
+    <fieldType name="point" class="solr.PointType" dimension="2" subFieldType="tdouble"/>
 
+    <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->
+    <fieldType name="location" class="solr.LatLonType" subFieldType="tdouble"/>
+
+   <!--
+    A Geohash is a compact representation of a latitude longitude pair in a single field.
+    See http://wiki.apache.org/solr/SpatialSearch
+   -->
+    <fieldtype name="geohash" class="solr.GeoHashField"/>
+    <!-- End added Solr 3.4+ types -->
  </types>
 
 
@@ -304,25 +342,54 @@
        fields or fields that need an index-time boost need norms.
    -->
 
-<!--
-     The document IDs.
-     - item_id contains the entity ID, e.g. a node's nid.
-     - index_id is the machine name of the search index this entry belongs to.
-     - id is a combination of the two, for uniquely identifying a document.
-       The format used is "$index_id-$item_id".
--->
-
-   <field name="id"       type="string" indexed="true" stored="true" required="true" />
-   <field name="item_id"  type="string" indexed="true" stored="true" required="true" />
-   <field name="index_id" type="string" indexed="true" stored="true" required="true" />
-
-   <!-- Since sorting by ID is explicitly allowed, store item_id also in a sortable way. -->
-   <copyField source="item_id" dest="ss_search_api_id" />
-
-   <!-- This field is used to build the spellchecker index. -->
+<!-- The document id is usually derived from a site-spcific key (hash) and the entity type and ID like:
+     $document->id = $hash . '/node/' . $node->nid; -->
+
+   <field name="id" type="string" indexed="true" stored="true" required="true" />
+   <!-- entity_id is the numeric object ID, e.g. Node ID, File ID -->
+   <field name="entity_id"  type="long" indexed="true" stored="true" />
+   <!-- entity_type is 'node', 'file', 'user', or some other Drupal object type -->
+   <field name="entity_type" type="string" indexed="true" stored="true" required="true" />
+   <!-- bundle is a node type, or as appropriate for other entity types -->
+   <field name="bundle" type="string" indexed="true" stored="true"/>
+   <field name="bundle_name" type="string" indexed="true" stored="true"/>
+
+   <field name="site" type="string" indexed="true" stored="true"/>
+   <field name="hash" type="string" indexed="true" stored="true"/>
+   <field name="url" type="string" indexed="true" stored="true"/>
+   <!-- label is the default field for a human-readable string for this entity (e.g. the title of a node) -->
+   <field name="label" type="text" indexed="true" stored="true" termVectors="true" omitNorms="true"/>
+   <!-- The string version of the title is used for sorting -->
+   <copyField source="label" dest="sort_label"/>
+   <!-- content is the default field for full text search - dump crap here -->
+   <field name="content" type="text" indexed="true" stored="true" termVectors="true"/>
+   <field name="teaser" type="text" indexed="false" stored="true"/>
+
+   <field name="path" type="string" indexed="true" stored="true"/>
+   <field name="path_alias" type="text" indexed="true" stored="true" termVectors="true" omitNorms="true"/>
+
+ <!-- These are the fields that correspond to a Drupal node. The beauty of having
+     Lucene store title, body, type, etc., is that we retrieve them with the search
+     result set and don't need to go to the database with a node_load. -->
+
+   <field name="tid"  type="long" indexed="true" stored="true" multiValued="true"/>
+
+   <field name="taxonomy_names" type="text" indexed="true" stored="false" termVectors="true" multiValued="true" omitNorms="true"/>
+   <!-- Copy terms to a single field that contains all taxonomy term names -->
+   <copyField source="tm_vid_*" dest="taxonomy_names"/>
+
+   <!-- Here, default is used to create a "timestamp" field indicating
+        when each document was indexed.-->
+   <field name="timestamp" type="tdate" indexed="true" stored="true" default="NOW" multiValued="false"/>
+
+	<!-- This field is used to build the spellchecker index -->
    <field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/>
-  <!-- Copy all text fields into our spell field for indexing. -->
-   <copyField source="t_*" dest="spell"/>
+
+  <!-- copyField commands copy one field to another at the time a document
+        is added to the index.  It's used either to index the same field differently,
+        or to add multiple fields to the same field for easier/faster searching.  -->
+   <copyField source="label" dest="spell"/>
+   <copyField source="content" dest="spell"/>
 
    <!-- Dynamic field definitions.  If a field name is not found, dynamicFields
         will be used if the name matches any of the patterns.
@@ -332,48 +399,102 @@
         Longer patterns will be matched first.  if equal size patterns
         both match, the first appearing in the schema will be used.  -->
 
-<!--
-     We only use dynamic fields for storing all fields except the above four,
-     since all others will change between indexes.
-     We here define two dynamic fields for each used data type,  one single- and
-     one multi-valued.
-
-     For customizing this, you can create an explicitly named field overwriting
-     this behaviour in one instance. E.g., for indexing a node title not with
-     the normal "text" datatype but with "text_ws" (see definitions above), you
-     could add:
-     <field name="t_title" type="text_ws" indexed="true" stored="true" />
--->
-
-   <!-- Fulltext fields (are always multiValued) -->
-   <dynamicField name="t_*" type="text" termVectors="true" />
-   <!-- These will be used for fields with type "String" or "URI". -->
-   <dynamicField name="ss_*" type="sortString" multiValued="false" termVectors="true" />
-   <dynamicField name="sm_*" type="sortString" multiValued="true" termVectors="true" />
-   <!-- These will be used for fields with type "Integer" or "Duration". -->
-   <dynamicField name="is_*" type="tlong" multiValued="false" termVectors="true" />
-   <dynamicField name="im_*" type="long" multiValued="true" termVectors="true" />
-   <!-- These will be used for fields with type "Decimal". -->
-   <dynamicField name="fs_*" type="tdouble" multiValued="false" termVectors="true" />
-   <dynamicField name="fm_*" type="tdouble" multiValued="true" termVectors="true" />
-   <!-- These will be used for fields with type "Date". -->
-   <dynamicField name="ds_*" type="tdate" multiValued="false" termVectors="true" />
-   <dynamicField name="dm_*" type="tdate" multiValued="true" termVectors="true" />
-   <!-- These will be used for fields with type "Boolean". -->
-   <dynamicField name="bs_*" type="boolean" multiValued="false" termVectors="true" />
-   <dynamicField name="bm_*" type="boolean" multiValued="true" termVectors="true" />
-
-   <!-- These fields are used for facetting on string fields, so case and
-        special characters are correctly displayed. -->
-   <dynamicField name="f_ss_*" type="string" multiValued="false" termVectors="true" />
-   <dynamicField name="f_sm_*" type="string" multiValued="true" termVectors="true" />
-   <copyField source="ss_*" dest="f_ss_*" />
-   <copyField source="sm_*" dest="f_sm_*" />
+   <!-- A set of fields to contain text extracted from HTML tag contents which we
+        can boost at query time. -->
+   <dynamicField name="tags_*" type="text"   indexed="true" stored="false" omitNorms="true"/>
+
+   <!-- For 2 and 3 letter prefix dynamic fields, the 1st letter indicates the data type and
+        the last letter is 's' for single valued, 'm' for multi-valued -->
+
+   <!-- We use long for integer since 64 bit ints are now common in PHP. -->
+   <dynamicField name="is_*"  type="long"    indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="im_*"  type="long"    indexed="true"  stored="true" multiValued="true"/>
+   <!-- List of floats can be saved in a regular float field -->
+   <dynamicField name="fs_*"  type="float"   indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="fm_*"  type="float"   indexed="true"  stored="true" multiValued="true"/>
+   <!-- List of doubles can be saved in a regular double field -->
+   <dynamicField name="ps_*"  type="double"   indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="pm_*"  type="double"   indexed="true"  stored="true" multiValued="true"/>
+   <!-- List of booleans can be saved in a regular boolean field -->
+   <dynamicField name="bm_*"  type="boolean" indexed="true"  stored="true" multiValued="true"/>
+   <dynamicField name="bs_*"  type="boolean" indexed="true"  stored="true" multiValued="false"/>
+   <!-- Regular text (without processing) can be stored in a string field-->
+   <dynamicField name="ss_*"  type="string"  indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="sm_*"  type="string"  indexed="true"  stored="true" multiValued="true"/>
+   <!-- Normal text fields are for full text - the relevance of a match depends on the length of the text -->
+   <dynamicField name="ts_*"  type="text"    indexed="true"  stored="true" multiValued="false" termVectors="true"/>
+   <dynamicField name="tm_*"  type="text"    indexed="true"  stored="true" multiValued="true" termVectors="true"/>
+   <!-- Unstemmed text fields for full text - the relevance of a match depends on the length of the text -->
+   <dynamicField name="tus_*" type="text_und" indexed="true"  stored="true" multiValued="false" termVectors="true"/>
+   <dynamicField name="tum_*" type="text_und" indexed="true"  stored="true" multiValued="true" termVectors="true"/>
+   <!-- These text fields omit norms - useful for extracted text like taxonomy_names -->
+   <dynamicField name="tos_*" type="text"    indexed="true"  stored="true" multiValued="false" termVectors="true" omitNorms="true"/>
+   <dynamicField name="tom_*" type="text"    indexed="true"  stored="true" multiValued="true" termVectors="true" omitNorms="true"/>
+   <!-- Special-purpose text fields -->
+   <dynamicField name="tes_*" type="edge_n2_kw_text" indexed="true" stored="true" multiValued="false" omitTermFreqAndPositions="true" />
+   <dynamicField name="tem_*" type="edge_n2_kw_text" indexed="true" stored="true" multiValued="true" omitTermFreqAndPositions="true" />
+   <dynamicField name="tws_*" type="text_ws" indexed="true" stored="true" multiValued="false"/>
+   <dynamicField name="twm_*" type="text_ws" indexed="true" stored="true" multiValued="true"/>
+
+   <!-- trie dates are preferred, so give them the 2 letter prefix -->
+   <dynamicField name="ds_*"  type="tdate"   indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="dm_*"  type="tdate"   indexed="true"  stored="true" multiValued="true"/>
+   <dynamicField name="its_*" type="tlong"   indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="itm_*" type="tlong"   indexed="true"  stored="true" multiValued="true"/>
+   <dynamicField name="fts_*" type="tfloat"  indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="ftm_*" type="tfloat"  indexed="true"  stored="true" multiValued="true"/>
+   <dynamicField name="pts_*" type="tdouble" indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="ptm_*" type="tdouble" indexed="true"  stored="true" multiValued="true"/>
+   <!-- Binary fields can be populated using base64 encoded data. Useful e.g. for embedding
+        a small image in a search result using the data URI scheme -->
+   <dynamicField name="xs_*"  type="binary"  indexed="false" stored="true" multiValued="false"/>
+   <dynamicField name="xm_*"  type="binary"  indexed="false" stored="true" multiValued="true"/>
+   <!-- In rare cases a date rather than tdate is needed for sortMissingLast -->
+   <dynamicField name="dds_*" type="date"    indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="ddm_*" type="date"    indexed="true"  stored="true" multiValued="true"/>
+   <!-- Sortable fields, good for sortMissingLast support &
+        We use long for integer since 64 bit ints are now common in PHP. -->
+   <dynamicField name="iss_*" type="slong"   indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="ism_*" type="slong"   indexed="true"  stored="true" multiValued="true"/>
+   <!-- In rare cases a sfloat rather than tfloat is needed for sortMissingLast -->
+   <dynamicField name="fss_*" type="sfloat"  indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="fsm_*" type="sfloat"  indexed="true"  stored="true" multiValued="true"/>
+   <dynamicField name="pss_*" type="sdouble" indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="psm_*" type="sdouble" indexed="true"  stored="true" multiValued="true"/>
+   <!-- In case a 32 bit int is really needed, we provide these fields. 'h' is mnemonic for 'half word', i.e. 32 bit on 64 arch -->
+   <dynamicField name="hs_*" type="integer" indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="hm_*" type="integer" indexed="true"  stored="true" multiValued="true"/>
+   <dynamicField name="hss_*" type="sint"   indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="hsm_*" type="sint"   indexed="true"  stored="true" multiValued="true"/>
+   <dynamicField name="hts_*" type="tint"   indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="htm_*" type="tint"   indexed="true"  stored="true" multiValued="true"/>
+
+   <!-- Unindexed string fields that can be used to store values that won't be searchable -->
+   <dynamicField name="zs_*" type="string"   indexed="false"  stored="true" multiValued="false"/>
+   <dynamicField name="zm_*" type="string"   indexed="false"  stored="true" multiValued="true"/>
+
+   <!-- Begin added fields to use features in Solr 3.4+
+        http://wiki.apache.org/solr/SpatialSearch#geodist_-_The_distance_function -->
+   <dynamicField name="points_*" type="point" indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="pointm_*" type="point" indexed="true"  stored="true" multiValued="true"/>
+   <dynamicField name="locs_*" type="location" indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="locm_*" type="location" indexed="true"  stored="true" multiValued="true"/>
+   <dynamicField name="geos_*" type="geohash" indexed="true"  stored="true" multiValued="false"/>
+   <dynamicField name="geom_*" type="geohash" indexed="true"  stored="true" multiValued="true"/>
+   <!-- End added fields for Solr 3.4+ -->
+
+   <!-- Sortable version of the dynamic string field -->
+   <dynamicField name="sort_*" type="sortString" indexed="true" stored="false"/>
+   <copyField source="ss_*" dest="sort_*"/>
+  <!-- A random sort field -->
+   <dynamicField name="random_*" type="rand" indexed="true" stored="true"/>
+   <!-- This field is used to store access information (e.g. node access grants), as opposed to field data -->
+   <dynamicField name="access_*" type="integer" indexed="true" stored="false" multiValued="true"/>
 
    <!-- The following causes solr to ignore any fields that don't already match an existing
         field name or dynamic field, rather than reporting them as an error.
-        Alternately, change the type="ignored" to some other type, e.g. "text", if you want
-        unknown fields indexed and/or stored by default. -->
+        Alternately, change the type="ignored" to some other type e.g. "text" if you want
+        unknown fields indexed and/or stored by default -->
    <dynamicField name="*" type="ignored" multiValued="true" />
 
  </fields>
@@ -383,6 +504,9 @@
    -->
  <uniqueKey>id</uniqueKey>
 
+ <!-- field for the QueryParser to use when an explicit fieldname is absent -->
+ <defaultSearchField>content</defaultSearchField>
+
  <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
  <solrQueryParser defaultOperator="AND"/>
 
