You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ca...@apache.org on 2016/11/30 18:03:33 UTC

svn commit: r1772100 [6/6] - in /jackrabbit/site/live/oak/docs/query: flags.html lucene-old.html lucene.html ootb-index-change.html ordered-index-migrate.html ordered-index.html property-index.html query-engine.html query.html solr.html

Modified: jackrabbit/site/live/oak/docs/query/solr.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/query/solr.html?rev=1772100&r1=1772099&r2=1772100&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/query/solr.html (original)
+++ jackrabbit/site/live/oak/docs/query/solr.html Wed Nov 30 18:03:33 2016
@@ -1,771 +1,771 @@
-<!DOCTYPE html>
-<!--
- | Generated by Apache Maven Doxia at 2016-11-29
- | Rendered using Apache Maven Fluido Skin 1.3.0
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta charset="UTF-8" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20161129" />
-    <meta http-equiv="Content-Language" content="en" />
-    <title>Jackrabbit Oak - Solr Index</title>
-    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
-    <link rel="stylesheet" href="../css/site.css" />
-    <link rel="stylesheet" href="../css/print.css" media="print" />
-
-      
-    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.0.min.js"></script>
-
-    
-            </head>
-        <body class="topBarEnabled">
-          
-    
-    
-            
-    
-    
-    <a href="http://github.com/apache/jackrabbit-oak">
-      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
-        src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"
-        alt="Fork me on GitHub">
-    </a>
-  
-                
-                    
-                
-
-    <div id="topbar" class="navbar navbar-fixed-top ">
-      <div class="navbar-inner">
-                <div class="container-fluid">
-        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
-          <span class="icon-bar"></span>
-          <span class="icon-bar"></span>
-          <span class="icon-bar"></span>
-        </a>
-                
-                                                                                <a class="brand" href="../"  title="Oak logo">
-
-                                
-                                                                                                                    <img src="../oak_logo.png" alt="Oak logo" />
-                
-                </a>
-                    
-                                <ul class="nav">
-                          <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Overview <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../index.html"  title="Jackrabbit Oak">Jackrabbit Oak</a>
-</li>
-                  
-                      <li>      <a href="../license.html"  title="License">License</a>
-</li>
-                  
-                      <li>      <a href="../downloads.html"  title="Downloads">Downloads</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Concepts and Architecture <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../architecture/overview.html"  title="Overview">Overview</a>
-</li>
-                  
-                      <li>      <a href="../architecture/nodestate.html"  title="The Node State Model">The Node State Model</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://www.day.com/specs/jcr/2.0/index.html"  title="JCR API">JCR API</a>
-</li>
-                  
-                      <li>      <a href="../oak_api/overview.html"  title="Oak API">Oak API</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Features and Plugins <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../features/atomic-counter.html"  title="Atomic Counter">Atomic Counter</a>
-</li>
-                  
-                      <li>      <a href="../plugins/blobstore.html"  title="Blob Storage">Blob Storage</a>
-</li>
-                  
-                      <li>      <a href="../clustering.html"  title="Clustering">Clustering</a>
-</li>
-                  
-                      <li>      <a href="../nodestore/documentmk.html"  title="DocumentNodeStore">DocumentNodeStore</a>
-</li>
-                  
-                      <li>      <a href="../nodestore/overview.html"  title="Node Storage">Node Storage</a>
-</li>
-                  
-                      <li>      <a href="../nodestore/persistent-cache.html"  title="Persistent Cache">Persistent Cache</a>
-</li>
-                  
-                      <li>      <a href="../query/query.html"  title="Query">Query</a>
-</li>
-                  
-                      <li>      <a href="../security/overview.html"  title="Security">Security</a>
-</li>
-                  
-                      <li>      <a href="../nodestore/segment/overview.html"  title="Segment Node Store">Segment Node Store</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Using Oak <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../use_getting_started.html"  title="Getting Started">Getting Started</a>
-</li>
-                  
-                      <li>      <a href="../construct.html"  title="Repository Construction">Repository Construction</a>
-</li>
-                  
-                      <li>      <a href="../osgi_config.html"  title="Configuring Oak">Configuring Oak</a>
-</li>
-                  
-                      <li>      <a href="../command_line.html"  title="Command Line Tools">Command Line Tools</a>
-</li>
-                  
-                      <li>      <a href="../migration.html"  title="Migration">Migration</a>
-</li>
-                  
-                      <li>      <a href="../differences.html"  title="Differences to Jackrabbit 2">Differences to Jackrabbit 2</a>
-</li>
-                  
-                      <li>      <a href="../known_issues.html"  title="Known Issues">Known Issues</a>
-</li>
-                  
-                      <li>      <a href="../dos_and_donts.html"  title="Dos and Don'ts">Dos and Don'ts</a>
-</li>
-                  
-                      <li>      <a href="../coldstandby/coldstandby.html"  title="Cold Standby">Cold Standby</a>
-</li>
-                  
-                      <li>      <a href="../FAQ.html"  title="FAQ">FAQ</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Developing Oak <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="../dev_getting_started.html"  title="Getting Started">Getting Started</a>
-</li>
-                  
-                      <li>      <a href="../participating.html"  title="Participating">Participating</a>
-</li>
-                  
-                      <li>      <a href="../developing-with-git.html"  title="Developing with Git">Developing with Git</a>
-</li>
-                  
-                      <li>      <a href="../diagnostic-builds.html"  title="Cutting diagnostic builds">Cutting diagnostic builds</a>
-</li>
-                  
-                      <li>      <a href="../attribution.html"  title="Attribution">Attribution</a>
-</li>
-                  
-                      <li>      <a href="../release-schedule.html"  title="Release Schedule">Release Schedule</a>
-</li>
-                          </ul>
-      </li>
-                <li class="dropdown">
-        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Links <b class="caret"></b></a>
-        <ul class="dropdown-menu">
-        
-                      <li>      <a href="http://jackrabbit.apache.org/oak"  title="Apache Jackrabbit Oak">Apache Jackrabbit Oak</a>
-</li>
-                  
-                      <li>      <a href="http://jackrabbit.apache.org/"  title="Apache Jackrabbit">Apache Jackrabbit</a>
-</li>
-                          </ul>
-      </li>
-                  </ul>
-          
-          
-          
-                   
-                      </div>
-          
-        </div>
-      </div>
-    </div>
-    
-        <div class="container-fluid">
-          <div id="banner">
-        <div class="pull-left">
-                                <div id="bannerLeft">
-                <h2>Oak Documentation</h2>
-                </div>
-                      </div>
-        <div class="pull-right">  </div>
-        <div class="clear"><hr/></div>
-      </div>
-
-      <div id="breadcrumbs">
-        <ul class="breadcrumb">
-                
-                    
-                  <li id="publishDate">Last Published: 2016-11-29</li>
-                  <li class="divider">|</li> <li id="projectVersion">Version: 1.6-SNAPSHOT</li>
-                      
-                
-                    
-      
-                            </ul>
-      </div>
-
-            
-      <div class="row-fluid">
-        <div id="leftColumn" class="span3">
-          <div class="well sidebar-nav">
-                
-                    
-                <ul class="nav nav-list">
-                    <li class="nav-header">Overview</li>
-                                
-      <li>
-    
-                          <a href="../index.html" title="Jackrabbit Oak">
-          <i class="none"></i>
-        Jackrabbit Oak</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../license.html" title="License">
-          <i class="none"></i>
-        License</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../downloads.html" title="Downloads">
-          <i class="none"></i>
-        Downloads</a>
-            </li>
-                              <li class="nav-header">Concepts and Architecture</li>
-                                
-      <li>
-    
-                          <a href="../architecture/overview.html" title="Overview">
-          <i class="none"></i>
-        Overview</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../architecture/nodestate.html" title="The Node State Model">
-          <i class="none"></i>
-        The Node State Model</a>
-            </li>
-                              <li class="nav-header">Main APIs</li>
-                                
-      <li>
-    
-                          <a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API">
-          <i class="none"></i>
-        JCR API</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../oak_api/overview.html" title="Oak API">
-          <i class="none"></i>
-        Oak API</a>
-            </li>
-                              <li class="nav-header">Features and Plugins</li>
-                                
-      <li>
-    
-                          <a href="../features/atomic-counter.html" title="Atomic Counter">
-          <i class="none"></i>
-        Atomic Counter</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../plugins/blobstore.html" title="Blob Storage">
-          <i class="none"></i>
-        Blob Storage</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../clustering.html" title="Clustering">
-          <i class="none"></i>
-        Clustering</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../nodestore/documentmk.html" title="DocumentNodeStore">
-          <i class="none"></i>
-        DocumentNodeStore</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../nodestore/overview.html" title="Node Storage">
-          <i class="none"></i>
-        Node Storage</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../nodestore/persistent-cache.html" title="Persistent Cache">
-          <i class="none"></i>
-        Persistent Cache</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../query/query.html" title="Query">
-          <i class="none"></i>
-        Query</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../security/overview.html" title="Security">
-          <i class="none"></i>
-        Security</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../nodestore/segment/overview.html" title="Segment Node Store">
-          <i class="none"></i>
-        Segment Node Store</a>
-            </li>
-                              <li class="nav-header">Using Oak</li>
-                                
-      <li>
-    
-                          <a href="../use_getting_started.html" title="Getting Started">
-          <i class="none"></i>
-        Getting Started</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../construct.html" title="Repository Construction">
-          <i class="none"></i>
-        Repository Construction</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../osgi_config.html" title="Configuring Oak">
-          <i class="none"></i>
-        Configuring Oak</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../command_line.html" title="Command Line Tools">
-          <i class="none"></i>
-        Command Line Tools</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../migration.html" title="Migration">
-          <i class="none"></i>
-        Migration</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../differences.html" title="Differences to Jackrabbit 2">
-          <i class="none"></i>
-        Differences to Jackrabbit 2</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../known_issues.html" title="Known Issues">
-          <i class="none"></i>
-        Known Issues</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../dos_and_donts.html" title="Dos and Don'ts">
-          <i class="none"></i>
-        Dos and Don'ts</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../coldstandby/coldstandby.html" title="Cold Standby">
-          <i class="none"></i>
-        Cold Standby</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../FAQ.html" title="FAQ">
-          <i class="none"></i>
-        FAQ</a>
-            </li>
-                              <li class="nav-header">Developing Oak</li>
-                                
-      <li>
-    
-                          <a href="../dev_getting_started.html" title="Getting Started">
-          <i class="none"></i>
-        Getting Started</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../participating.html" title="Participating">
-          <i class="none"></i>
-        Participating</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../developing-with-git.html" title="Developing with Git">
-          <i class="none"></i>
-        Developing with Git</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../diagnostic-builds.html" title="Cutting diagnostic builds">
-          <i class="none"></i>
-        Cutting diagnostic builds</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../attribution.html" title="Attribution">
-          <i class="none"></i>
-        Attribution</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="../release-schedule.html" title="Release Schedule">
-          <i class="none"></i>
-        Release Schedule</a>
-            </li>
-                              <li class="nav-header">Links</li>
-                                
-      <li>
-    
-                          <a href="http://jackrabbit.apache.org/oak" class="externalLink" title="Apache Jackrabbit Oak">
-          <i class="none"></i>
-        Apache Jackrabbit Oak</a>
-            </li>
-                  
-      <li>
-    
-                          <a href="http://jackrabbit.apache.org/" class="externalLink" title="Apache Jackrabbit">
-          <i class="none"></i>
-        Apache Jackrabbit</a>
-            </li>
-            </ul>
-                
-                    
-                
-          <hr class="divider" />
-
-           <div id="poweredBy">
-                   
-    <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
-
-    
-    <div class="g-plusone" data-href="http://jackrabbit.apache.org/oak/docs/" data-size="tall" ></div>
-
-                   <div class="clear"></div>
-                            <div class="clear"></div>
-                            <div class="clear"></div>
-                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
-        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
-      </a>
-                  </div>
-          </div>
-        </div>
-        
-                
-        <div id="bodyColumn"  class="span9" >
-                                  
-            <!-- Licensed to the Apache Software Foundation (ASF) under one or more
-   contributor license agreements.  See the NOTICE file distributed with
-   this work for additional information regarding copyright ownership.
-   The ASF licenses this file to You under the Apache License, Version 2.0
-   (the "License"); you may not use this file except in compliance with
-   the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License. --><div class="section">
-<h2>Solr Index<a name="Solr_Index"></a></h2>
-<p>The Solr index is mainly meant for full-text search (the &#x2018;contains&#x2019; type of queries):</p>
-
-<div class="source">
-<pre>//*[jcr:contains(., 'text')]
-</pre></div>
-<p>but is also able to search by path and property restrictions. Primary type restriction support is also provided by it&#x2019;s not recommended as it&#x2019;s usually much better to use the <a href="query.html#The_Node_Type_Index">node type index</a> for such kind of queries.</p>
-<p>Even if it&#x2019;s not just a full-text index, it&#x2019;s recommended to use it asynchronously (see <tt>Oak#withAsyncIndexing</tt>) because, in most production scenarios, it&#x2019;ll be a &#x2018;remote&#x2019; index and therefore network latency / errors would have less impact on the repository performance.</p>
-<p>The index definition node for a Solr-based index:</p>
-
-<ul>
-  
-<li>must be of type <tt>oak:QueryIndexDefinition</tt></li>
-  
-<li>must have the <tt>type</tt> property set to <b><tt>solr</tt></b></li>
-  
-<li>must contain the <tt>async</tt> property set to the value <tt>async</tt>, this is what sends the index update process to a background thread.</li>
-</ul>
-<p><i>Optionally</i> one can add</p>
-
-<ul>
-  
-<li>the <tt>reindex</tt> flag which when set to <tt>true</tt>, triggers a full content re-index.</li>
-</ul>
-<p>Example:</p>
-
-<div class="source">
-<pre>{
-  NodeBuilder index = root.child(&quot;oak:index&quot;);
-  index.child(&quot;solr&quot;)
-    .setProperty(&quot;jcr:primaryType&quot;, &quot;oak:QueryIndexDefinition&quot;, Type.NAME)
-    .setProperty(&quot;type&quot;, &quot;solr&quot;)
-    .setProperty(&quot;async&quot;, &quot;async&quot;)
-    .setProperty(&quot;reindex&quot;, true);
-}
-</pre></div>
-<p>The Oak Solr index creates one document in the Solr index for each node in the repository, each of such documents has usually at least a field for each property associated with the related node. Indexing of properties can be done by name: e.g. property &#x2018;jcr:title&#x2019; of a node is written into a field &#x2018;jcr:title&#x2019; of the corresponding Solr document in the index, or by type: e.g. properties &#x2018;jcr:data&#x2019; and &#x2018;binary_content&#x2019; of type <i>binary</i> are written into a field &#x2018;binary_data&#x2019; that&#x2019;s responsible for the indexing of all fields having that type and thus properly configured for hosting such type of data.</p>
-<div class="section">
-<h3>Configuring the Solr index<a name="Configuring_the_Solr_index"></a></h3>
-<p>Besides the index definition parameters mentioned above, a number of additional parameters can be defined in  Oak Solr index configuration. Such a configuration is composed by:</p>
-
-<ul>
-  
-<li>the search / indexing configuration (see <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.html">OakSolrConfiguration</a>)</li>
-  
-<li>the Solr server configuration (see <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.html">SolrServerConfiguration</a>)</li>
-</ul></div>
-<div class="section">
-<h3>Search / indexing configuration options<a name="Search__indexing_configuration_options"></a></h3>
-<p>Such options define how Oak handles search and indexing requests in order to properly delegate such operations to Solr.</p>
-<div class="section">
-<h4>Use for property restrictions<a name="Use_for_property_restrictions"></a></h4>
-<p>If set to <i>true</i> the Solr index will be used also for filtering nodes by property restrictions.</p>
-<p>Default is &#x2018;false&#x2019;.</p></div>
-<div class="section">
-<h4>Use for path restrictions<a name="Use_for_path_restrictions"></a></h4>
-<p>If set to <i>true</i> the Solr index will be used also for filtering nodes by path restrictions.</p>
-<p>Default is &#x2018;false&#x2019;.</p></div>
-<div class="section">
-<h4>Use for primary types<a name="Use_for_primary_types"></a></h4>
-<p>If set to <i>true</i> the Solr index will be used also for filtering nodes by primary type.</p>
-<p>Default is &#x2018;false&#x2019;.</p></div>
-<div class="section">
-<h4>Path field<a name="Path_field"></a></h4>
-<p>The name of the field to be used for searching an exact match of a certain path.</p>
-<p>Default is &#x2018;path_exact&#x2019;.</p></div>
-<div class="section">
-<h4>Catch all field<a name="Catch_all_field"></a></h4>
-<p>The name of the field to be used for searching when no specific field is defined in the search query (e.g. user entered queries like &#x2018;foo bar&#x2019;).</p>
-<p>Default is &#x2018;catch_all&#x2019;.</p>
-<p>Default Solr schema.xml provided with Oak Solr index contains a copyField from everything to &#x2018;catch_all&#x2019;, that causing all the properties of a certain node to be indexed into that field (as separate values) therefore a query run against that field would match if any of the properties of the original node would have matched such a query.</p></div>
-<div class="section">
-<h4>Descendant path field<a name="Descendant_path_field"></a></h4>
-<p>The name of the field to be used for searching for nodes descendants of a certain node.</p>
-<p>Default is &#x2018;path_des&#x2019;.</p>
-<p>E.g. The Solr query to find all the descendant nodes of /a/b would be &#x2018;path_des:\/a\/b&#x2019;.</p></div>
-<div class="section">
-<h4>Children path field<a name="Children_path_field"></a></h4>
-<p>The name of the field to be used for searching for child nodes of a certain node.</p>
-<p>Default is &#x2018;path_child&#x2019;.</p>
-<p>E.g. The Solr query to find all the child nodes of /a/b would be &#x2018;path_child:\/a\/b&#x2019;.</p></div>
-<div class="section">
-<h4>Parent path field<a name="Parent_path_field"></a></h4>
-<p>The name of the field to be used for searching for parent node of a certain node.</p>
-<p>Default is &#x2018;path_anc&#x2019;.</p>
-<p>E.g. The Solr query to find the parent node of /a/b would be &#x2018;path_anc:\/a\/b&#x2019;.</p></div>
-<div class="section">
-<h4>Property restriction fields<a name="Property_restriction_fields"></a></h4>
-<p>The (optional) mapping of property names into Solr fields, so that a mapping jcr:title=foo is defined each node having  the property jcr:title will have its correspondant Solr document having a property foo indexed with the value of the  jcr:title property.</p>
-<p>Default is no mapping, therefore the default mechanism of mapping property names to field names is performed.</p></div>
-<div class="section">
-<h4>Used properties<a name="Used_properties"></a></h4>
-<p>A whitelist of properties to be used for indexing / searching by Solr index. Such a whitelist, if not empty, would dominate whatever configuration defined for the <a href="#Ignored_properties">Ignored_properties</a>.</p>
-<p>Default is an empty list.</p>
-<p>E.g. If such a whitelist contains properties <i>jcr:title</i> and <i>text</i> the Solr index will only index such properties for each node and will be possible to use it for searching only on those two properties.</p></div>
-<div class="section">
-<h4>&#xa0;Ignored properties<a name="aIgnored_properties"></a></h4>
-<p>A blacklist of properties to be ignored while indexing and searching by the Solr index.</p>
-<p>Such a blacklist makes sense (it will be taken into account by the Solr index) only if the <a href="#Used_properties">Used properties</a>  option doesn&#x2019;t have any value.</p>
-<p>Default is the following array: <i>(&#x201c;rep:members&#x201d;, &#x201c;rep:authorizableId&#x201d;, &#x201c;jcr:uuid&#x201d;, &#x201c;rep:principalName&#x201d;, &#x201c;rep:password&#x201d;}</i>.</p></div>
-<div class="section">
-<h4>Commit policy<a name="Commit_policy"></a></h4>
-<p>The Solr commit policy to be used when indexing nodes as documents in Solr.</p>
-<p>Possible values are &#x2018;SOFT&#x2019;, &#x2018;HARD&#x2019;, &#x2018;AUTO&#x2019;.</p>
-<p>SOFT: perform a Solr soft-commit for each indexed document.</p>
-<p>HARD: perform a Solr (hard) commit for each indexed document.</p>
-<p>AUTO: doesn&#x2019;t perform any commit and relies on auto commit being configured on plain Solr&#x2019;s configuration (solrconfig.xml).</p>
-<p>Default is <i>SOFT</i>.</p></div>
-<div class="section">
-<h4>Rows<a name="Rows"></a></h4>
-<p>The number of documents per &#x2018;page&#x2019; to be fetched for each query.</p>
-<p>Default is _Integer.MAX<i>VALUE</i> (was <i>50</i> in Oak 1.0).</p></div>
-<div class="section">
-<h4>Collapse <i>jcr:content</i> nodes<a name="Collapse_jcr:content_nodes"></a></h4>
-<p><tt>@since 1.3.4, 1.2.4, 1.0.18</tt></p>
-<p>Whether the <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/Collapse+and+Expand+Results">Collapsing query parser</a> should be used when searching in order to collapse nodes that are descendants of &#x2018;jcr:content&#x2019; nodes into the &#x2018;jcr:content&#x2019; node only. E.g. if normal query results would include &#x2018;/a/jcr:content&#x2019; and &#x2018;/a/jcr:content/b/&#x2019;, with this option enabled only &#x2018;/a/jcr:content&#x2019; would be returned by Solr using the Collapsing query parser. This feature requires an additional field to be indexed, therefore if this is turned on, reindexing should be triggered in order to make it work properly. </p></div>
-<div class="section">
-<h4>Collapsed path field<a name="Collapsed_path_field"></a></h4>
-<p><tt>@since 1.3.4, 1.2.4, 1.0.18</tt></p>
-<p>The name of the field used for collapsing descendants of jcr:content nodes, see &#x2018;Collapse jcr:content nodes&#x2019; option.</p>
-<div class="section">
-<h5>Solr server configuration options<a name="Solr_server_configuration_options"></a></h5>
-<p>TBD</p></div></div>
-<div class="section">
-<h4>Setting up the Solr server<a name="Setting_up_the_Solr_server"></a></h4>
-<p>For the Solr index to work Oak needs to be able to communicate with a Solr instance / cluster. Apache Solr supports multiple deployment architectures: </p>
-
-<ul>
-  
-<li>embedded Solr instance running in the same JVM the client runs into</li>
-  
-<li>single remote instance</li>
-  
-<li>master / slave architecture, eventually with multiple shards and replicas</li>
-  
-<li>SolrCloud cluster, with Zookeeper instance(s) to control a dynamic, resilient set of Solr servers for high  availability and fault tolerance</li>
-</ul>
-<p>The Oak Solr index can be configured to either use an &#x2018;embedded Solr server&#x2019; or a &#x2018;remote Solr server&#x2019; (being able to connect to a single remote instance or to a SolrCloud cluster via Zookeeper).</p>
-<div class="section">
-<h5>Supported Solr deployments<a name="Supported_Solr_deployments"></a></h5>
-<p>Depending on the use case, different Solr server deployments are recommended.</p>
-<div class="section">
-<h6>Embedded Solr server<a name="Embedded_Solr_server"></a></h6>
-<p>The embedded Solr server is recommended for developing and testing the Solr index for an Oak repository. With that an in-memory Solr instance is started in the same JVM of the Oak repository, without HTTP bindings (for security purposes as it&#x2019;d allow HTTP access to repository data independently of ACLs). Configuring an embedded Solr server mainly consists of providing the path to a standard <a class="externalLink" href="https://wiki.apache.org/solr/SolrTerminology">Solr home dir</a> (<i>solr.home.path</i> Oak property) to be used to start Solr; this path can be either relative or absolute, if such a path would not exist then the default configuration provided with <i>oak-solr-core</i> artifact would be put in the given path. To start an embedded Solr server with a custom configuration (e.g. different schema.xml / solrconfig.xml than the default  ones) the (modified) Solr home files would have to be put in a dedicated directory, according to Solr home structure, so  that th
 e solr.home.path property can be pointed to that directory.</p></div>
-<div class="section">
-<h6>Single remote Solr server<a name="Single_remote_Solr_server"></a></h6>
-<p>A single (remote) Solr instance is the simplest possible setup for using the Oak Solr index in a production environment. Oak will communicate to such a Solr server through Solr&#x2019;s HTTP APIs (via <a class="externalLink" href="http://wiki.apache.org/solr/Solrj">SolrJ</a> client). Configuring a single remote Solr instance consists of providing the URL to connect to in order to reach the <a class="externalLink" href="https://wiki.apache.org/solr/SolrTerminology">Solr core</a> that will host the Solr index for the Oak repository via the <i>solr.http.url</i>  property which will have to contain such a URL (e.g. _<a class="externalLink" href="http://10.10.1.101:8983/solr/oak_)">http://10.10.1.101:8983/solr/oak_)</a>. All the configuration and tuning of Solr, other than what&#x2019;s described on this page, will have to be performed on the Solr side; <a class="externalLink" href="http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/resources/solr/">sample Solr c
 onfiguration</a> files (schema.xml, solrconfig.xml, etc.) to start with can be found in <i>oak-solr-core</i> artifact.</p></div>
-<div class="section">
-<h6>SolrCloud cluster<a name="SolrCloud_cluster"></a></h6>
-<p>A <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/SolrCloud">SolrCloud</a> cluster is the recommended setup for an Oak Solr index in production as it provides a scalable and fault tolerant architecture. In order to configure a SolrCloud cluster the host of the Zookeeper instance / ensemble managing the Solr servers has to be provided in the <i>solr.zk.host</i> property (e.g. <i>10.1.1.108:9983</i>) since the SolrJ client for SolrCloud communicates directly with Zookeeper. The <a class="externalLink" href="https://wiki.apache.org/solr/SolrTerminology">Solr collection</a> to be used within Oak is named <i>oak</i>, having a replication  factor of 2 and using 2 shards; this means in the default setup the SolrCloud cluster would have to be composed by at  least 4 Solr servers as the index will be split into 2 shards and each shard will have 2 replicas. SolrCloud also allows the hot deploy of configuration files to be used for a certain collection so whil
 e setting up the  collection to be used for Oak with the needed files before starting the cluster, configuration files can also be uploaded  from a local directory, this is controlled by the <i>solr.conf.dir</i> property of the &#x2018;Oak Solr remote server configuration&#x2019;. For a detailed description of how SolrCloud works see the <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/SolrCloud">Solr reference guide</a>.</p></div></div>
-<div class="section">
-<h5>OSGi environment<a name="OSGi_environment"></a></h5>
-<p>Create an index definition for the Solr index, as described <a href="#Solr_index">above</a>. Once the query index definition node has been created, access OSGi ConfigurationAdmin via e.g. Apache Felix WebConsole:</p>
-
-<ol style="list-style-type: decimal">
-  
-<li>find the &#x2018;Oak Solr indexing / search configuration&#x2019; item and eventually change configuration properties as needed</li>
-  
-<li>find either the &#x2018;Oak Solr embedded server configuration&#x2019; or &#x2018;Oak Solr remote server configuration&#x2019; items depending  on the chosen Solr architecture and eventually change configuration properties as needed</li>
-  
-<li>find the &#x2018;Oak Solr server provider&#x2019; item and select the chosen provider (&#x2018;remote&#x2019; or &#x2018;embedded&#x2019;)</li>
-</ol></div></div>
-<div class="section">
-<h4>Advanced search features<a name="Advanced_search_features"></a></h4>
-<div class="section">
-<h5>Aggregation<a name="Aggregation"></a></h5>
-<p><tt>@since Oak 1.1.4, 1.0.13</tt></p>
-<p>Solr index supports query time aggregation, that can be enabled in OSGi by setting <tt>SolrQueryIndexProviderService</tt> service property <tt>query.aggregation</tt> to true. </p></div>
-<div class="section">
-<h5>Suggestions<a name="Suggestions"></a></h5>
-<p><tt>@since Oak 1.1.17, 1.0.15</tt></p>
-<p>Default Solr configuration (<a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-solr-core/src/main/resources/solr/oak/conf/solrconfig.xml#L1102">solrconfig.xml</a> and <a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml#L119">schema.xml</a>) comes with a preconfigured suggest component, which uses Lucene&#x2019;s <a class="externalLink" href="https://lucene.apache.org/core/4_7_0/suggest/org/apache/lucene/search/suggest/analyzing/FuzzySuggester.html">FuzzySuggester</a> under the hood. Updating the suggester in <a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-solr-core/src/main/resources/solr/oak/conf/solrconfig.xml#L1110">default configuration</a> is done every time a <tt>commit</tt> request is sent to Solr however it&#x2019;s recommended not to do that in production systems if possible, as it&#x2019;s much better to send ex
 plicit request to Solr to rebuild the suggester dictionary, e.g. once a day, week, etc.</p>
-<p>More / different suggesters can be configured in Solr, as per <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/Suggester">reference documentation</a>.</p></div>
-<div class="section">
-<h5>Spellchecking<a name="Spellchecking"></a></h5>
-<p><tt>@since Oak 1.1.17, 1.0.13</tt></p>
-<p>Default Solr configuration (<a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-solr-core/src/main/resources/solr/oak/conf/solrconfig.xml#L1177">solrconfig.xml</a>) comes with a preconfigured spellchecking component, which uses Lucene&#x2019;s <a class="externalLink" href="http://lucene.apache.org/core/4_7_0/suggest/org/apache/lucene/search/spell/DirectSpellChecker.html">DirectSpellChecker</a> under the hood as it doesn&#x2019;t require any additional data structure neither in RAM nor on disk.</p>
-<p>More / different spellcheckers can be configured in Solr, as per <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/Spell+Checking">reference documentation</a>.</p></div></div>
-<div class="section">
-<h4>Facets<a name="Facets"></a></h4>
-<p><tt>@since Oak 1.3.14</tt></p>
-<p>In order to enable proper usage of facets in Solr index the following dynamic field needs to be added to the <i>schema.xml</i></p>
-
-<div class="source">
-<pre>    &lt;dynamicField name=&quot;*_facet&quot; type=&quot;string&quot; indexed=&quot;false&quot; stored=&quot;false&quot; docValues=&quot;true&quot; multiValued=&quot;true&quot;/&gt;
-</pre></div>
-<p>with dedicated <i>copyFields</i> for specific properties.</p>
-
-<div class="source">
-<pre>    &lt;copyField source=&quot;jcr:primaryType&quot; dest=&quot;jcr:primaryType_facet&quot;/&gt; &lt;!-- facet on jcr:primaryType field/property --&gt;
-</pre></div></div>
-<div class="section">
-<h4>Persisted configuration<a name="Persisted_configuration"></a></h4>
-<p><tt>@since Oak 1.4.0</tt></p>
-<p>It&#x2019;s possible to create (multiple) Solr indexes via persisted configuration. A persisted Oak Solr index is created whenever an index definition with <i>type = solr</i> has a child node named <i>server</i> and such a child node has the <i>solrServerType</i> property set (to either <i>embedded</i> or <i>remote</i>). If no such child node exists, an Oak Solr index will be only created upon explicit registration of a [SolrServerProvider]  e.g. via OSGi. All the <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.html">OakSolrConfiguration</a>  and <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.html">SolrServerConfiguration</a>  properties are exposed and configurable, see also <a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-sol
 r-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/OakSolrNodeStateConfiguration.java#L245">OakSolrNodeStateConfiguration#Properties</a>  and <a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerConfigurationProvider.java#L94">NodeStateSolrServerConfigurationProvider#Properties</a></p>
-
-<div class="source">
-<pre>/oak:index/solrRemote
-  - jcr:primaryType = &quot;oak:QueryIndexDefinition&quot;
-  - type = &quot;solr&quot;
-  - async = &quot;async&quot;
-  + server
-    - jcr:primaryType = &quot;nt:unstructured&quot;
-    - solrServerType = &quot;remote&quot;
-    - httpUrl = &quot;http://localhost:8983/solr/oak&quot;
-</pre></div>
-<p>If such configurations exists in the repository the <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServersObserver.html">NodeStateSolrServersObserver</a> should be registered too (e.g. via <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/osgi/NodeStateSolrServersObserverService.html">NodeStateSolrServersObserverService</a> OSGi service).</p></div>
-<div class="section">
-<h4>Notes<a name="Notes"></a></h4>
-<p>As of Oak version 1.0.0:</p>
-
-<ul>
-  
-<li>Solr index doesn&#x2019;t support search using relative properties, see <a class="externalLink" href="https://issues.apache.org/jira/browse/OAK-1835">OAK-1835</a>.</li>
-  
-<li>Lucene can only be used for full-text queries, Solr can be used for full-text search <i>and</i> for JCR queries involving path, property and primary type restrictions.</li>
-</ul>
-<p>As of Oak version 1.2.0:</p>
-
-<ul>
-  
-<li>Solr index doesn&#x2019;t support index time aggregation, but only query time aggregation</li>
-  
-<li>Lucene and Solr can be both used for full text, property and path restrictions</li>
-</ul></div></div></div>
-                  </div>
-            </div>
-          </div>
-
-    <hr/>
-
-    <footer>
-            <div class="container-fluid">
-              <div class="row span12">Copyright &copy;                    2012-2016
-                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
-            All Rights Reserved.      
-                    
-      </div>
-
-        
-        
-          
-    
-    
-                
-    <div id="ohloh" class="pull-right">
-      <script type="text/javascript" src="http://www.ohloh.net/p/jackrabbit-oak/widgets/project_thin_badge.js"></script>
-    </div>
-        </div>
-    </footer>
-  </body>
+<!DOCTYPE html>
+<!--
+ | Generated by Apache Maven Doxia at 2016-11-30
+ | Rendered using Apache Maven Fluido Skin 1.3.0
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <meta name="Date-Revision-yyyymmdd" content="20161130" />
+    <meta http-equiv="Content-Language" content="en" />
+    <title>Jackrabbit Oak - Solr Index</title>
+    <link rel="stylesheet" href="../css/apache-maven-fluido-1.3.0.min.css" />
+    <link rel="stylesheet" href="../css/site.css" />
+    <link rel="stylesheet" href="../css/print.css" media="print" />
+
+      
+    <script type="text/javascript" src="../js/apache-maven-fluido-1.3.0.min.js"></script>
+
+    
+            </head>
+        <body class="topBarEnabled">
+          
+    
+    
+            
+    
+    
+    <a href="http://github.com/apache/jackrabbit-oak">
+      <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
+        src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png"
+        alt="Fork me on GitHub">
+    </a>
+  
+                
+                    
+                
+
+    <div id="topbar" class="navbar navbar-fixed-top ">
+      <div class="navbar-inner">
+                <div class="container-fluid">
+        <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </a>
+                
+                                                                                <a class="brand" href="../"  title="Oak logo">
+
+                                
+                                                                                                                    <img src="../oak_logo.png" alt="Oak logo" />
+                
+                </a>
+                    
+                                <ul class="nav">
+                          <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Overview <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../index.html"  title="Jackrabbit Oak">Jackrabbit Oak</a>
+</li>
+                  
+                      <li>      <a href="../license.html"  title="License">License</a>
+</li>
+                  
+                      <li>      <a href="../downloads.html"  title="Downloads">Downloads</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Concepts and Architecture <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../architecture/overview.html"  title="Overview">Overview</a>
+</li>
+                  
+                      <li>      <a href="../architecture/nodestate.html"  title="The Node State Model">The Node State Model</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://www.day.com/specs/jcr/2.0/index.html"  title="JCR API">JCR API</a>
+</li>
+                  
+                      <li>      <a href="../oak_api/overview.html"  title="Oak API">Oak API</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Features and Plugins <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../features/atomic-counter.html"  title="Atomic Counter">Atomic Counter</a>
+</li>
+                  
+                      <li>      <a href="../plugins/blobstore.html"  title="Blob Storage">Blob Storage</a>
+</li>
+                  
+                      <li>      <a href="../clustering.html"  title="Clustering">Clustering</a>
+</li>
+                  
+                      <li>      <a href="../nodestore/documentmk.html"  title="DocumentNodeStore">DocumentNodeStore</a>
+</li>
+                  
+                      <li>      <a href="../nodestore/overview.html"  title="Node Storage">Node Storage</a>
+</li>
+                  
+                      <li>      <a href="../nodestore/persistent-cache.html"  title="Persistent Cache">Persistent Cache</a>
+</li>
+                  
+                      <li>      <a href="../query/query.html"  title="Query">Query</a>
+</li>
+                  
+                      <li>      <a href="../security/overview.html"  title="Security">Security</a>
+</li>
+                  
+                      <li>      <a href="../nodestore/segment/overview.html"  title="Segment Node Store">Segment Node Store</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Using Oak <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../use_getting_started.html"  title="Getting Started">Getting Started</a>
+</li>
+                  
+                      <li>      <a href="../construct.html"  title="Repository Construction">Repository Construction</a>
+</li>
+                  
+                      <li>      <a href="../osgi_config.html"  title="Configuring Oak">Configuring Oak</a>
+</li>
+                  
+                      <li>      <a href="../command_line.html"  title="Command Line Tools">Command Line Tools</a>
+</li>
+                  
+                      <li>      <a href="../migration.html"  title="Migration">Migration</a>
+</li>
+                  
+                      <li>      <a href="../differences.html"  title="Differences to Jackrabbit 2">Differences to Jackrabbit 2</a>
+</li>
+                  
+                      <li>      <a href="../known_issues.html"  title="Known Issues">Known Issues</a>
+</li>
+                  
+                      <li>      <a href="../dos_and_donts.html"  title="Dos and Don'ts">Dos and Don'ts</a>
+</li>
+                  
+                      <li>      <a href="../coldstandby/coldstandby.html"  title="Cold Standby">Cold Standby</a>
+</li>
+                  
+                      <li>      <a href="../FAQ.html"  title="FAQ">FAQ</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Developing Oak <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="../dev_getting_started.html"  title="Getting Started">Getting Started</a>
+</li>
+                  
+                      <li>      <a href="../participating.html"  title="Participating">Participating</a>
+</li>
+                  
+                      <li>      <a href="../developing-with-git.html"  title="Developing with Git">Developing with Git</a>
+</li>
+                  
+                      <li>      <a href="../diagnostic-builds.html"  title="Cutting diagnostic builds">Cutting diagnostic builds</a>
+</li>
+                  
+                      <li>      <a href="../attribution.html"  title="Attribution">Attribution</a>
+</li>
+                  
+                      <li>      <a href="../release-schedule.html"  title="Release Schedule">Release Schedule</a>
+</li>
+                          </ul>
+      </li>
+                <li class="dropdown">
+        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Links <b class="caret"></b></a>
+        <ul class="dropdown-menu">
+        
+                      <li>      <a href="http://jackrabbit.apache.org/oak"  title="Apache Jackrabbit Oak">Apache Jackrabbit Oak</a>
+</li>
+                  
+                      <li>      <a href="http://jackrabbit.apache.org/"  title="Apache Jackrabbit">Apache Jackrabbit</a>
+</li>
+                          </ul>
+      </li>
+                  </ul>
+          
+          
+          
+                   
+                      </div>
+          
+        </div>
+      </div>
+    </div>
+    
+        <div class="container-fluid">
+          <div id="banner">
+        <div class="pull-left">
+                                <div id="bannerLeft">
+                <h2>Oak Documentation</h2>
+                </div>
+                      </div>
+        <div class="pull-right">  </div>
+        <div class="clear"><hr/></div>
+      </div>
+
+      <div id="breadcrumbs">
+        <ul class="breadcrumb">
+                
+                    
+                  <li id="publishDate">Last Published: 2016-11-30</li>
+                  <li class="divider">|</li> <li id="projectVersion">Version: 1.6-SNAPSHOT</li>
+                      
+                
+                    
+      
+                            </ul>
+      </div>
+
+            
+      <div class="row-fluid">
+        <div id="leftColumn" class="span3">
+          <div class="well sidebar-nav">
+                
+                    
+                <ul class="nav nav-list">
+                    <li class="nav-header">Overview</li>
+                                
+      <li>
+    
+                          <a href="../index.html" title="Jackrabbit Oak">
+          <i class="none"></i>
+        Jackrabbit Oak</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../license.html" title="License">
+          <i class="none"></i>
+        License</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../downloads.html" title="Downloads">
+          <i class="none"></i>
+        Downloads</a>
+            </li>
+                              <li class="nav-header">Concepts and Architecture</li>
+                                
+      <li>
+    
+                          <a href="../architecture/overview.html" title="Overview">
+          <i class="none"></i>
+        Overview</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../architecture/nodestate.html" title="The Node State Model">
+          <i class="none"></i>
+        The Node State Model</a>
+            </li>
+                              <li class="nav-header">Main APIs</li>
+                                
+      <li>
+    
+                          <a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API">
+          <i class="none"></i>
+        JCR API</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../oak_api/overview.html" title="Oak API">
+          <i class="none"></i>
+        Oak API</a>
+            </li>
+                              <li class="nav-header">Features and Plugins</li>
+                                
+      <li>
+    
+                          <a href="../features/atomic-counter.html" title="Atomic Counter">
+          <i class="none"></i>
+        Atomic Counter</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../plugins/blobstore.html" title="Blob Storage">
+          <i class="none"></i>
+        Blob Storage</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../clustering.html" title="Clustering">
+          <i class="none"></i>
+        Clustering</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../nodestore/documentmk.html" title="DocumentNodeStore">
+          <i class="none"></i>
+        DocumentNodeStore</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../nodestore/overview.html" title="Node Storage">
+          <i class="none"></i>
+        Node Storage</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../nodestore/persistent-cache.html" title="Persistent Cache">
+          <i class="none"></i>
+        Persistent Cache</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../query/query.html" title="Query">
+          <i class="none"></i>
+        Query</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../security/overview.html" title="Security">
+          <i class="none"></i>
+        Security</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../nodestore/segment/overview.html" title="Segment Node Store">
+          <i class="none"></i>
+        Segment Node Store</a>
+            </li>
+                              <li class="nav-header">Using Oak</li>
+                                
+      <li>
+    
+                          <a href="../use_getting_started.html" title="Getting Started">
+          <i class="none"></i>
+        Getting Started</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../construct.html" title="Repository Construction">
+          <i class="none"></i>
+        Repository Construction</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../osgi_config.html" title="Configuring Oak">
+          <i class="none"></i>
+        Configuring Oak</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../command_line.html" title="Command Line Tools">
+          <i class="none"></i>
+        Command Line Tools</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../migration.html" title="Migration">
+          <i class="none"></i>
+        Migration</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../differences.html" title="Differences to Jackrabbit 2">
+          <i class="none"></i>
+        Differences to Jackrabbit 2</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../known_issues.html" title="Known Issues">
+          <i class="none"></i>
+        Known Issues</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../dos_and_donts.html" title="Dos and Don'ts">
+          <i class="none"></i>
+        Dos and Don'ts</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../coldstandby/coldstandby.html" title="Cold Standby">
+          <i class="none"></i>
+        Cold Standby</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../FAQ.html" title="FAQ">
+          <i class="none"></i>
+        FAQ</a>
+            </li>
+                              <li class="nav-header">Developing Oak</li>
+                                
+      <li>
+    
+                          <a href="../dev_getting_started.html" title="Getting Started">
+          <i class="none"></i>
+        Getting Started</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../participating.html" title="Participating">
+          <i class="none"></i>
+        Participating</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../developing-with-git.html" title="Developing with Git">
+          <i class="none"></i>
+        Developing with Git</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../diagnostic-builds.html" title="Cutting diagnostic builds">
+          <i class="none"></i>
+        Cutting diagnostic builds</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../attribution.html" title="Attribution">
+          <i class="none"></i>
+        Attribution</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="../release-schedule.html" title="Release Schedule">
+          <i class="none"></i>
+        Release Schedule</a>
+            </li>
+                              <li class="nav-header">Links</li>
+                                
+      <li>
+    
+                          <a href="http://jackrabbit.apache.org/oak" class="externalLink" title="Apache Jackrabbit Oak">
+          <i class="none"></i>
+        Apache Jackrabbit Oak</a>
+            </li>
+                  
+      <li>
+    
+                          <a href="http://jackrabbit.apache.org/" class="externalLink" title="Apache Jackrabbit">
+          <i class="none"></i>
+        Apache Jackrabbit</a>
+            </li>
+            </ul>
+                
+                    
+                
+          <hr class="divider" />
+
+           <div id="poweredBy">
+                   
+    <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script>
+
+    
+    <div class="g-plusone" data-href="http://jackrabbit.apache.org/oak/docs/" data-size="tall" ></div>
+
+                   <div class="clear"></div>
+                            <div class="clear"></div>
+                            <div class="clear"></div>
+                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
+        <img class="builtBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
+      </a>
+                  </div>
+          </div>
+        </div>
+        
+                
+        <div id="bodyColumn"  class="span9" >
+                                  
+            <!-- Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License. --><div class="section">
+<h2>Solr Index<a name="Solr_Index"></a></h2>
+<p>The Solr index is mainly meant for full-text search (the &#x2018;contains&#x2019; type of queries):</p>
+
+<div class="source">
+<pre>//*[jcr:contains(., 'text')]
+</pre></div>
+<p>but is also able to search by path and property restrictions. Primary type restriction support is also provided by it&#x2019;s not recommended as it&#x2019;s usually much better to use the <a href="query.html#The_Node_Type_Index">node type index</a> for such kind of queries.</p>
+<p>Even if it&#x2019;s not just a full-text index, it&#x2019;s recommended to use it asynchronously (see <tt>Oak#withAsyncIndexing</tt>) because, in most production scenarios, it&#x2019;ll be a &#x2018;remote&#x2019; index and therefore network latency / errors would have less impact on the repository performance.</p>
+<p>The index definition node for a Solr-based index:</p>
+
+<ul>
+  
+<li>must be of type <tt>oak:QueryIndexDefinition</tt></li>
+  
+<li>must have the <tt>type</tt> property set to <b><tt>solr</tt></b></li>
+  
+<li>must contain the <tt>async</tt> property set to the value <tt>async</tt>, this is what sends the index update process to a background thread.</li>
+</ul>
+<p><i>Optionally</i> one can add</p>
+
+<ul>
+  
+<li>the <tt>reindex</tt> flag which when set to <tt>true</tt>, triggers a full content re-index.</li>
+</ul>
+<p>Example:</p>
+
+<div class="source">
+<pre>{
+  NodeBuilder index = root.child(&quot;oak:index&quot;);
+  index.child(&quot;solr&quot;)
+    .setProperty(&quot;jcr:primaryType&quot;, &quot;oak:QueryIndexDefinition&quot;, Type.NAME)
+    .setProperty(&quot;type&quot;, &quot;solr&quot;)
+    .setProperty(&quot;async&quot;, &quot;async&quot;)
+    .setProperty(&quot;reindex&quot;, true);
+}
+</pre></div>
+<p>The Oak Solr index creates one document in the Solr index for each node in the repository, each of such documents has usually at least a field for each property associated with the related node. Indexing of properties can be done by name: e.g. property &#x2018;jcr:title&#x2019; of a node is written into a field &#x2018;jcr:title&#x2019; of the corresponding Solr document in the index, or by type: e.g. properties &#x2018;jcr:data&#x2019; and &#x2018;binary_content&#x2019; of type <i>binary</i> are written into a field &#x2018;binary_data&#x2019; that&#x2019;s responsible for the indexing of all fields having that type and thus properly configured for hosting such type of data.</p>
+<div class="section">
+<h3>Configuring the Solr index<a name="Configuring_the_Solr_index"></a></h3>
+<p>Besides the index definition parameters mentioned above, a number of additional parameters can be defined in  Oak Solr index configuration. Such a configuration is composed by:</p>
+
+<ul>
+  
+<li>the search / indexing configuration (see <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.html">OakSolrConfiguration</a>)</li>
+  
+<li>the Solr server configuration (see <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.html">SolrServerConfiguration</a>)</li>
+</ul></div>
+<div class="section">
+<h3>Search / indexing configuration options<a name="Search__indexing_configuration_options"></a></h3>
+<p>Such options define how Oak handles search and indexing requests in order to properly delegate such operations to Solr.</p>
+<div class="section">
+<h4>Use for property restrictions<a name="Use_for_property_restrictions"></a></h4>
+<p>If set to <i>true</i> the Solr index will be used also for filtering nodes by property restrictions.</p>
+<p>Default is &#x2018;false&#x2019;.</p></div>
+<div class="section">
+<h4>Use for path restrictions<a name="Use_for_path_restrictions"></a></h4>
+<p>If set to <i>true</i> the Solr index will be used also for filtering nodes by path restrictions.</p>
+<p>Default is &#x2018;false&#x2019;.</p></div>
+<div class="section">
+<h4>Use for primary types<a name="Use_for_primary_types"></a></h4>
+<p>If set to <i>true</i> the Solr index will be used also for filtering nodes by primary type.</p>
+<p>Default is &#x2018;false&#x2019;.</p></div>
+<div class="section">
+<h4>Path field<a name="Path_field"></a></h4>
+<p>The name of the field to be used for searching an exact match of a certain path.</p>
+<p>Default is &#x2018;path_exact&#x2019;.</p></div>
+<div class="section">
+<h4>Catch all field<a name="Catch_all_field"></a></h4>
+<p>The name of the field to be used for searching when no specific field is defined in the search query (e.g. user entered queries like &#x2018;foo bar&#x2019;).</p>
+<p>Default is &#x2018;catch_all&#x2019;.</p>
+<p>Default Solr schema.xml provided with Oak Solr index contains a copyField from everything to &#x2018;catch_all&#x2019;, that causing all the properties of a certain node to be indexed into that field (as separate values) therefore a query run against that field would match if any of the properties of the original node would have matched such a query.</p></div>
+<div class="section">
+<h4>Descendant path field<a name="Descendant_path_field"></a></h4>
+<p>The name of the field to be used for searching for nodes descendants of a certain node.</p>
+<p>Default is &#x2018;path_des&#x2019;.</p>
+<p>E.g. The Solr query to find all the descendant nodes of /a/b would be &#x2018;path_des:\/a\/b&#x2019;.</p></div>
+<div class="section">
+<h4>Children path field<a name="Children_path_field"></a></h4>
+<p>The name of the field to be used for searching for child nodes of a certain node.</p>
+<p>Default is &#x2018;path_child&#x2019;.</p>
+<p>E.g. The Solr query to find all the child nodes of /a/b would be &#x2018;path_child:\/a\/b&#x2019;.</p></div>
+<div class="section">
+<h4>Parent path field<a name="Parent_path_field"></a></h4>
+<p>The name of the field to be used for searching for parent node of a certain node.</p>
+<p>Default is &#x2018;path_anc&#x2019;.</p>
+<p>E.g. The Solr query to find the parent node of /a/b would be &#x2018;path_anc:\/a\/b&#x2019;.</p></div>
+<div class="section">
+<h4>Property restriction fields<a name="Property_restriction_fields"></a></h4>
+<p>The (optional) mapping of property names into Solr fields, so that a mapping jcr:title=foo is defined each node having  the property jcr:title will have its correspondant Solr document having a property foo indexed with the value of the  jcr:title property.</p>
+<p>Default is no mapping, therefore the default mechanism of mapping property names to field names is performed.</p></div>
+<div class="section">
+<h4>Used properties<a name="Used_properties"></a></h4>
+<p>A whitelist of properties to be used for indexing / searching by Solr index. Such a whitelist, if not empty, would dominate whatever configuration defined for the <a href="#Ignored_properties">Ignored_properties</a>.</p>
+<p>Default is an empty list.</p>
+<p>E.g. If such a whitelist contains properties <i>jcr:title</i> and <i>text</i> the Solr index will only index such properties for each node and will be possible to use it for searching only on those two properties.</p></div>
+<div class="section">
+<h4>&#xa0;Ignored properties<a name="aIgnored_properties"></a></h4>
+<p>A blacklist of properties to be ignored while indexing and searching by the Solr index.</p>
+<p>Such a blacklist makes sense (it will be taken into account by the Solr index) only if the <a href="#Used_properties">Used properties</a>  option doesn&#x2019;t have any value.</p>
+<p>Default is the following array: <i>(&#x201c;rep:members&#x201d;, &#x201c;rep:authorizableId&#x201d;, &#x201c;jcr:uuid&#x201d;, &#x201c;rep:principalName&#x201d;, &#x201c;rep:password&#x201d;}</i>.</p></div>
+<div class="section">
+<h4>Commit policy<a name="Commit_policy"></a></h4>
+<p>The Solr commit policy to be used when indexing nodes as documents in Solr.</p>
+<p>Possible values are &#x2018;SOFT&#x2019;, &#x2018;HARD&#x2019;, &#x2018;AUTO&#x2019;.</p>
+<p>SOFT: perform a Solr soft-commit for each indexed document.</p>
+<p>HARD: perform a Solr (hard) commit for each indexed document.</p>
+<p>AUTO: doesn&#x2019;t perform any commit and relies on auto commit being configured on plain Solr&#x2019;s configuration (solrconfig.xml).</p>
+<p>Default is <i>SOFT</i>.</p></div>
+<div class="section">
+<h4>Rows<a name="Rows"></a></h4>
+<p>The number of documents per &#x2018;page&#x2019; to be fetched for each query.</p>
+<p>Default is _Integer.MAX<i>VALUE</i> (was <i>50</i> in Oak 1.0).</p></div>
+<div class="section">
+<h4>Collapse <i>jcr:content</i> nodes<a name="Collapse_jcr:content_nodes"></a></h4>
+<p><tt>@since 1.3.4, 1.2.4, 1.0.18</tt></p>
+<p>Whether the <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/Collapse+and+Expand+Results">Collapsing query parser</a> should be used when searching in order to collapse nodes that are descendants of &#x2018;jcr:content&#x2019; nodes into the &#x2018;jcr:content&#x2019; node only. E.g. if normal query results would include &#x2018;/a/jcr:content&#x2019; and &#x2018;/a/jcr:content/b/&#x2019;, with this option enabled only &#x2018;/a/jcr:content&#x2019; would be returned by Solr using the Collapsing query parser. This feature requires an additional field to be indexed, therefore if this is turned on, reindexing should be triggered in order to make it work properly. </p></div>
+<div class="section">
+<h4>Collapsed path field<a name="Collapsed_path_field"></a></h4>
+<p><tt>@since 1.3.4, 1.2.4, 1.0.18</tt></p>
+<p>The name of the field used for collapsing descendants of jcr:content nodes, see &#x2018;Collapse jcr:content nodes&#x2019; option.</p>
+<div class="section">
+<h5>Solr server configuration options<a name="Solr_server_configuration_options"></a></h5>
+<p>TBD</p></div></div>
+<div class="section">
+<h4>Setting up the Solr server<a name="Setting_up_the_Solr_server"></a></h4>
+<p>For the Solr index to work Oak needs to be able to communicate with a Solr instance / cluster. Apache Solr supports multiple deployment architectures: </p>
+
+<ul>
+  
+<li>embedded Solr instance running in the same JVM the client runs into</li>
+  
+<li>single remote instance</li>
+  
+<li>master / slave architecture, eventually with multiple shards and replicas</li>
+  
+<li>SolrCloud cluster, with Zookeeper instance(s) to control a dynamic, resilient set of Solr servers for high  availability and fault tolerance</li>
+</ul>
+<p>The Oak Solr index can be configured to either use an &#x2018;embedded Solr server&#x2019; or a &#x2018;remote Solr server&#x2019; (being able to connect to a single remote instance or to a SolrCloud cluster via Zookeeper).</p>
+<div class="section">
+<h5>Supported Solr deployments<a name="Supported_Solr_deployments"></a></h5>
+<p>Depending on the use case, different Solr server deployments are recommended.</p>
+<div class="section">
+<h6>Embedded Solr server<a name="Embedded_Solr_server"></a></h6>
+<p>The embedded Solr server is recommended for developing and testing the Solr index for an Oak repository. With that an in-memory Solr instance is started in the same JVM of the Oak repository, without HTTP bindings (for security purposes as it&#x2019;d allow HTTP access to repository data independently of ACLs). Configuring an embedded Solr server mainly consists of providing the path to a standard <a class="externalLink" href="https://wiki.apache.org/solr/SolrTerminology">Solr home dir</a> (<i>solr.home.path</i> Oak property) to be used to start Solr; this path can be either relative or absolute, if such a path would not exist then the default configuration provided with <i>oak-solr-core</i> artifact would be put in the given path. To start an embedded Solr server with a custom configuration (e.g. different schema.xml / solrconfig.xml than the default  ones) the (modified) Solr home files would have to be put in a dedicated directory, according to Solr home structure, so  that th
 e solr.home.path property can be pointed to that directory.</p></div>
+<div class="section">
+<h6>Single remote Solr server<a name="Single_remote_Solr_server"></a></h6>
+<p>A single (remote) Solr instance is the simplest possible setup for using the Oak Solr index in a production environment. Oak will communicate to such a Solr server through Solr&#x2019;s HTTP APIs (via <a class="externalLink" href="http://wiki.apache.org/solr/Solrj">SolrJ</a> client). Configuring a single remote Solr instance consists of providing the URL to connect to in order to reach the <a class="externalLink" href="https://wiki.apache.org/solr/SolrTerminology">Solr core</a> that will host the Solr index for the Oak repository via the <i>solr.http.url</i>  property which will have to contain such a URL (e.g. _<a class="externalLink" href="http://10.10.1.101:8983/solr/oak_)">http://10.10.1.101:8983/solr/oak_)</a>. All the configuration and tuning of Solr, other than what&#x2019;s described on this page, will have to be performed on the Solr side; <a class="externalLink" href="http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/resources/solr/">sample Solr c
 onfiguration</a> files (schema.xml, solrconfig.xml, etc.) to start with can be found in <i>oak-solr-core</i> artifact.</p></div>
+<div class="section">
+<h6>SolrCloud cluster<a name="SolrCloud_cluster"></a></h6>
+<p>A <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/SolrCloud">SolrCloud</a> cluster is the recommended setup for an Oak Solr index in production as it provides a scalable and fault tolerant architecture. In order to configure a SolrCloud cluster the host of the Zookeeper instance / ensemble managing the Solr servers has to be provided in the <i>solr.zk.host</i> property (e.g. <i>10.1.1.108:9983</i>) since the SolrJ client for SolrCloud communicates directly with Zookeeper. The <a class="externalLink" href="https://wiki.apache.org/solr/SolrTerminology">Solr collection</a> to be used within Oak is named <i>oak</i>, having a replication  factor of 2 and using 2 shards; this means in the default setup the SolrCloud cluster would have to be composed by at  least 4 Solr servers as the index will be split into 2 shards and each shard will have 2 replicas. SolrCloud also allows the hot deploy of configuration files to be used for a certain collection so whil
 e setting up the  collection to be used for Oak with the needed files before starting the cluster, configuration files can also be uploaded  from a local directory, this is controlled by the <i>solr.conf.dir</i> property of the &#x2018;Oak Solr remote server configuration&#x2019;. For a detailed description of how SolrCloud works see the <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/SolrCloud">Solr reference guide</a>.</p></div></div>
+<div class="section">
+<h5>OSGi environment<a name="OSGi_environment"></a></h5>
+<p>Create an index definition for the Solr index, as described <a href="#Solr_index">above</a>. Once the query index definition node has been created, access OSGi ConfigurationAdmin via e.g. Apache Felix WebConsole:</p>
+
+<ol style="list-style-type: decimal">
+  
+<li>find the &#x2018;Oak Solr indexing / search configuration&#x2019; item and eventually change configuration properties as needed</li>
+  
+<li>find either the &#x2018;Oak Solr embedded server configuration&#x2019; or &#x2018;Oak Solr remote server configuration&#x2019; items depending  on the chosen Solr architecture and eventually change configuration properties as needed</li>
+  
+<li>find the &#x2018;Oak Solr server provider&#x2019; item and select the chosen provider (&#x2018;remote&#x2019; or &#x2018;embedded&#x2019;)</li>
+</ol></div></div>
+<div class="section">
+<h4>Advanced search features<a name="Advanced_search_features"></a></h4>
+<div class="section">
+<h5>Aggregation<a name="Aggregation"></a></h5>
+<p><tt>@since Oak 1.1.4, 1.0.13</tt></p>
+<p>Solr index supports query time aggregation, that can be enabled in OSGi by setting <tt>SolrQueryIndexProviderService</tt> service property <tt>query.aggregation</tt> to true. </p></div>
+<div class="section">
+<h5>Suggestions<a name="Suggestions"></a></h5>
+<p><tt>@since Oak 1.1.17, 1.0.15</tt></p>
+<p>Default Solr configuration (<a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-solr-core/src/main/resources/solr/oak/conf/solrconfig.xml#L1102">solrconfig.xml</a> and <a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-solr-core/src/main/resources/solr/oak/conf/schema.xml#L119">schema.xml</a>) comes with a preconfigured suggest component, which uses Lucene&#x2019;s <a class="externalLink" href="https://lucene.apache.org/core/4_7_0/suggest/org/apache/lucene/search/suggest/analyzing/FuzzySuggester.html">FuzzySuggester</a> under the hood. Updating the suggester in <a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-solr-core/src/main/resources/solr/oak/conf/solrconfig.xml#L1110">default configuration</a> is done every time a <tt>commit</tt> request is sent to Solr however it&#x2019;s recommended not to do that in production systems if possible, as it&#x2019;s much better to send ex
 plicit request to Solr to rebuild the suggester dictionary, e.g. once a day, week, etc.</p>
+<p>More / different suggesters can be configured in Solr, as per <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/Suggester">reference documentation</a>.</p></div>
+<div class="section">
+<h5>Spellchecking<a name="Spellchecking"></a></h5>
+<p><tt>@since Oak 1.1.17, 1.0.13</tt></p>
+<p>Default Solr configuration (<a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-solr-core/src/main/resources/solr/oak/conf/solrconfig.xml#L1177">solrconfig.xml</a>) comes with a preconfigured spellchecking component, which uses Lucene&#x2019;s <a class="externalLink" href="http://lucene.apache.org/core/4_7_0/suggest/org/apache/lucene/search/spell/DirectSpellChecker.html">DirectSpellChecker</a> under the hood as it doesn&#x2019;t require any additional data structure neither in RAM nor on disk.</p>
+<p>More / different spellcheckers can be configured in Solr, as per <a class="externalLink" href="https://cwiki.apache.org/confluence/display/solr/Spell+Checking">reference documentation</a>.</p></div></div>
+<div class="section">
+<h4>Facets<a name="Facets"></a></h4>
+<p><tt>@since Oak 1.3.14</tt></p>
+<p>In order to enable proper usage of facets in Solr index the following dynamic field needs to be added to the <i>schema.xml</i></p>
+
+<div class="source">
+<pre>    &lt;dynamicField name=&quot;*_facet&quot; type=&quot;string&quot; indexed=&quot;false&quot; stored=&quot;false&quot; docValues=&quot;true&quot; multiValued=&quot;true&quot;/&gt;
+</pre></div>
+<p>with dedicated <i>copyFields</i> for specific properties.</p>
+
+<div class="source">
+<pre>    &lt;copyField source=&quot;jcr:primaryType&quot; dest=&quot;jcr:primaryType_facet&quot;/&gt; &lt;!-- facet on jcr:primaryType field/property --&gt;
+</pre></div></div>
+<div class="section">
+<h4>Persisted configuration<a name="Persisted_configuration"></a></h4>
+<p><tt>@since Oak 1.4.0</tt></p>
+<p>It&#x2019;s possible to create (multiple) Solr indexes via persisted configuration. A persisted Oak Solr index is created whenever an index definition with <i>type = solr</i> has a child node named <i>server</i> and such a child node has the <i>solrServerType</i> property set (to either <i>embedded</i> or <i>remote</i>). If no such child node exists, an Oak Solr index will be only created upon explicit registration of a [SolrServerProvider]  e.g. via OSGi. All the <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/configuration/OakSolrConfiguration.html">OakSolrConfiguration</a>  and <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/configuration/SolrServerConfiguration.html">SolrServerConfiguration</a>  properties are exposed and configurable, see also <a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-sol
 r-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/OakSolrNodeStateConfiguration.java#L245">OakSolrNodeStateConfiguration#Properties</a>  and <a class="externalLink" href="https://github.com/apache/jackrabbit-oak/blob/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerConfigurationProvider.java#L94">NodeStateSolrServerConfigurationProvider#Properties</a></p>
+
+<div class="source">
+<pre>/oak:index/solrRemote
+  - jcr:primaryType = &quot;oak:QueryIndexDefinition&quot;
+  - type = &quot;solr&quot;
+  - async = &quot;async&quot;
+  + server
+    - jcr:primaryType = &quot;nt:unstructured&quot;
+    - solrServerType = &quot;remote&quot;
+    - httpUrl = &quot;http://localhost:8983/solr/oak&quot;
+</pre></div>
+<p>If such configurations exists in the repository the <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServersObserver.html">NodeStateSolrServersObserver</a> should be registered too (e.g. via <a class="externalLink" href="http://jackrabbit.apache.org/oak/docs/apidocs/org/apache/jackrabbit/oak/plugins/index/solr/osgi/NodeStateSolrServersObserverService.html">NodeStateSolrServersObserverService</a> OSGi service).</p></div>
+<div class="section">
+<h4>Notes<a name="Notes"></a></h4>
+<p>As of Oak version 1.0.0:</p>
+
+<ul>
+  
+<li>Solr index doesn&#x2019;t support search using relative properties, see <a class="externalLink" href="https://issues.apache.org/jira/browse/OAK-1835">OAK-1835</a>.</li>
+  
+<li>Lucene can only be used for full-text queries, Solr can be used for full-text search <i>and</i> for JCR queries involving path, property and primary type restrictions.</li>
+</ul>
+<p>As of Oak version 1.2.0:</p>
+
+<ul>
+  
+<li>Solr index doesn&#x2019;t support index time aggregation, but only query time aggregation</li>
+  
+<li>Lucene and Solr can be both used for full text, property and path restrictions</li>
+</ul></div></div></div>
+                  </div>
+            </div>
+          </div>
+
+    <hr/>
+
+    <footer>
+            <div class="container-fluid">
+              <div class="row span12">Copyright &copy;                    2012-2016
+                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
+            All Rights Reserved.      
+                    
+      </div>
+
+        
+        
+          
+    
+    
+                
+    <div id="ohloh" class="pull-right">
+      <script type="text/javascript" src="http://www.ohloh.net/p/jackrabbit-oak/widgets/project_thin_badge.js"></script>
+    </div>
+        </div>
+    </footer>
+  </body>
 </html>
\ No newline at end of file