You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by sv...@apache.org on 2023/07/21 18:07:51 UTC

svn commit: r1083697 [39/43] - in /sites/solr/guide: ./ solr/9_0/ solr/9_0/configuration-guide/ solr/9_0/deployment-guide/ solr/9_0/getting-started/ solr/9_0/indexing-guide/ solr/9_0/query-guide/ solr/9_0/upgrade-notes/ solr/9_1/ solr/9_1/configuration...

Modified: sites/solr/guide/solr/latest/query-guide/learning-to-rank.html
URL: http://svn.apache.org/viewvc/sites/solr/guide/solr/latest/query-guide/learning-to-rank.html?rev=1083697&r1=1083696&r2=1083697&view=diff
==============================================================================
--- sites/solr/guide/solr/latest/query-guide/learning-to-rank.html (original)
+++ sites/solr/guide/solr/latest/query-guide/learning-to-rank.html Fri Jul 21 18:07:42 2023
@@ -39,7 +39,7 @@
         <div class="navbar-item has-dropdown is-hoverable">
           <a class="navbar-link" href="#">Resources</a>
           <div class="navbar-dropdown">
-            <a class="navbar-item" href="https://solr.apache.org/docs/9_2_1/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a>
+            <a class="navbar-item" href="https://solr.apache.org/docs/9_3_0/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a>
             <a class="navbar-item" href="https://solr.apache.org/community.html#version-control" target="_blank" rel="noreferrer nopener">Source Code</a>
             <a class="navbar-item" href="https://solr.apache.org/community.html" target="_blank" rel="noreferrer nopener">Community Links</a>
             <a class="navbar-item" href="https://github.com/apache/solr/tree/main/dev-docs/ref-guide" target="_blank" rel="noreferrer nopener">Contribute</a>
@@ -56,25 +56,25 @@
   </nav>
 </header>
 <div class="body">
-<div class="nav-container" data-component="solr" data-version="9_2">
+<div class="nav-container" data-component="solr" data-version="9_3">
   <aside class="nav">
     <div class="panels">
 <!-- Solr Changes - Start -->
 <div class="nav-panel-explore" data-panel="explore">
   <div class="context">
     <span class="title">Solr Reference Guide</span>
-    <span class="version">9.2</span>
+    <span class="version">9.3</span>
   </div>
 <!-- Programmatically creates the component and version list -->
   <ul class="components">
     <li class="component is-current">
       <a class="title" href="../index.html">Solr Reference Guide</a>
       <ul class="versions">
-        <li class="version">
-          <a href="../../9_3/index.html">9.3-beta</a>
-        </li>
         <li class="version is-current is-latest">
-          <a href="../index.html">9.2</a>
+          <a href="../index.html">9.3</a>
+        </li>
+        <li class="version">
+          <a href="../../9_2/index.html">9.2</a>
         </li>
         <li class="version">
           <a href="../../9_1/index.html">9.1</a>
@@ -211,7 +211,7 @@
     <a class="nav-link" href="../getting-started/tutorial-films.html">Exercise 2: Index Films Data</a>
   </li>
   <li class="nav-item" data-depth="2">
-    <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3 Index Your Own Data</a>
+    <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3: Index Your Own Data</a>
   </li>
   <li class="nav-item" data-depth="2">
     <a class="nav-link" href="../getting-started/tutorial-solrcloud.html">Getting Started with SolrCloud</a>
@@ -718,6 +718,9 @@
 </ul>
   </li>
   <li class="nav-item" data-depth="2">
+    <a class="nav-link" href="../indexing-guide/indexing-with-cbor.html">Indexing with Update CBOR data format</a>
+  </li>
+  <li class="nav-item" data-depth="2">
     <a class="nav-link" href="../indexing-guide/indexing-with-tika.html">Indexing with Solr Cell and Apache Tika</a>
   </li>
   <li class="nav-item" data-depth="2">
@@ -1070,17 +1073,17 @@
   </ul>
 </nav>
 <div class="page-versions">
-  <button class="version-menu-toggle" title="Show other versions of page">9.2</button>
+  <button class="version-menu-toggle" title="Show other versions of page">9.3</button>
   <div class="version-menu">
-    <a class="version" href="../../9_3/query-guide/learning-to-rank.html">9.3-beta</a>
-    <a class="version is-current" href="learning-to-rank.html">9.2</a>
+    <a class="version is-current" href="learning-to-rank.html">9.3</a>
+    <a class="version" href="../../9_2/query-guide/learning-to-rank.html">9.2</a>
     <a class="version" href="../../9_1/query-guide/learning-to-rank.html">9.1</a>
     <a class="version" href="../../9_0/query-guide/learning-to-rank.html">9.0</a>
   </div>
 </div>
 <!-- Solr Additions - Start -->
 <!-- Solr New File -->
-<span class="perma-link-copy" version="9_2">
+<span class="perma-link-copy" version="9_3">
 </span><!-- Solr Additions - End -->
   <div class="edit-this-page"><a href="https://github.com/apache/solr/tree/main/solr/solr-ref-guide/modules/query-guide/pages/learning-to-rank.adoc">Edit this Page</a></div>
   </div>
@@ -1097,7 +1100,7 @@
 <p>With the <strong>Learning To Rank</strong> (or <strong>LTR</strong> for short) module you can configure and run machine learned ranking models in Solr.</p>
 </div>
 <div class="paragraph">
-<p>The module also supports feature extraction inside Solr.
+<p>The module also supports feature logging inside Solr.
 The only thing you need to do outside Solr is train your own ranking model.</p>
 </div>
 </div>
@@ -1193,49 +1196,49 @@ The process of <a href="https://en.wikip
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">field length</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/FieldLengthFeature.html">FieldLengthFeature</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/FieldLengthFeature.html">FieldLengthFeature</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>{"field":"title"}</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">not (yet) supported</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">field value</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/FieldValueFeature.html">FieldValueFeature</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/FieldValueFeature.html">FieldValueFeature</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>{"field":"hits"}</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">not (yet) supported</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">original score</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/OriginalScoreFeature.html">OriginalScoreFeature</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/OriginalScoreFeature.html">OriginalScoreFeature</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>{}</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">not applicable</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">solr query</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/SolrFeature.html">SolrFeature</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/SolrFeature.html">SolrFeature</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>{"q":"{!func}</code> <code>recip(ms(NOW,last_modified)</code> <code>,3.16e-11,1,1)"}</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">supported</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">solr filter query</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/SolrFeature.html">SolrFeature</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/SolrFeature.html">SolrFeature</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>{"fq":["{!terms f=category}book"]}</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">supported</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">solr query + filter query</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/SolrFeature.html">SolrFeature</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/SolrFeature.html">SolrFeature</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>{"q":"{!func}</code> <code>recip(ms(NOW,last_modified),</code> <code>3.16e-11,1,1)",</code> <code>"fq":["{!terms f=category}book"]}</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">supported</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">value</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/ValueFeature.html">ValueFeature</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/ValueFeature.html">ValueFeature</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>{"value":"${userFromMobile}","required":true}</code></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">supported</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">(custom)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">(custom class extending <a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/Feature.html">Feature</a>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">(custom class extending <a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/Feature.html">Feature</a>)</p></td>
 <td class="tableblock halign-left valign-top"></td>
 <td class="tableblock halign-left valign-top"></td>
 </tr>
@@ -1257,29 +1260,29 @@ The process of <a href="https://en.wikip
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Identity</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/norm/IdentityNormalizer.html">IdentityNormalizer</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/norm/IdentityNormalizer.html">IdentityNormalizer</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>{}</code></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">MinMax</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/norm/MinMaxNormalizer.html">MinMaxNormalizer</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/norm/MinMaxNormalizer.html">MinMaxNormalizer</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>{"min":"0", "max":"50" }</code></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Standard</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/norm/StandardNormalizer.html">StandardNormalizer</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/norm/StandardNormalizer.html">StandardNormalizer</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock"><code>{"avg":"42","std":"6"}</code></p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">(custom)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">(custom class extending <a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/norm/Normalizer.html">Normalizer</a>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">(custom class extending <a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/norm/Normalizer.html">Normalizer</a>)</p></td>
 <td class="tableblock halign-left valign-top"></td>
 </tr>
 </tbody>
 </table>
 </div>
 <div class="sect3">
-<h4 id="feature-extraction"><a class="anchor" href="#feature-extraction"></a>Feature Extraction</h4>
+<h4 id="feature-logging"><a class="anchor" href="#feature-logging"></a>Feature Logging</h4>
 <div class="paragraph">
 <p>The ltr module includes a <a href="document-transformers.html" class="xref page"><code>[features]</code> transformer</a> to support the calculation and return of feature values for <a href="https://en.wikipedia.org/wiki/Feature_extraction">feature extraction</a> purposes including and especially when you do not yet have an actual reranking model.</p>
 </div>
@@ -1308,32 +1311,32 @@ In the form of JSON files your trained m
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Linear</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/model/LinearModel.html">LinearModel</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/model/LinearModel.html">LinearModel</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">RankSVM, Pranking</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Multiple Additive Trees</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.html">MultipleAdditiveTreesModel</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.html">MultipleAdditiveTreesModel</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">LambdaMART, Gradient Boosted Regression Trees (GBRT)</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Neural Network</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/model/NeuralNetworkModel.html">NeuralNetworkModel</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/model/NeuralNetworkModel.html">NeuralNetworkModel</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">RankNet</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">(wrapper)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/model/DefaultWrapperModel.html">DefaultWrapperModel</a></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/model/DefaultWrapperModel.html">DefaultWrapperModel</a></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">(not applicable)</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">(custom)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">(custom class extending <a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/model/AdapterModel.html">AdapterModel</a>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">(custom class extending <a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/model/AdapterModel.html">AdapterModel</a>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">(not applicable)</p></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">(custom)</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">(custom class extending <a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/model/LTRScoringModel.html">LTRScoringModel</a>)</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">(custom class extending <a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/model/LTRScoringModel.html">LTRScoringModel</a>)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">(not applicable)</p></td>
 </tr>
 </tbody>
@@ -1351,6 +1354,273 @@ In the form of JSON files your trained m
 </div>
 </div>
 <div class="sect1">
+<h2 id="installation-of-ltr"><a class="anchor" href="#installation-of-ltr"></a>Installation of LTR</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>The ltr module requires the <code>modules/ltr/lib/solr-ltr-*.jar</code> JARs.</p>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="ltr-configuration"><a class="anchor" href="#ltr-configuration"></a>LTR Configuration</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>Learning-To-Rank is a module and therefore its plugins must be configured in <code>solrconfig.xml</code>.</p>
+</div>
+<div class="sect2">
+<h3 id="minimum-requirements"><a class="anchor" href="#minimum-requirements"></a>Minimum Requirements</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Include the required module JARs.
+Note that by default paths are relative to the Solr core, so they may need adjustments to your configuration, or an explicit specification of the <code>$solr.install.dir</code>.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;lib dir="${solr.install.dir:../../../..}/modules/ltr/lib/" regex=".*\.jar" /&gt;</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Declaration of the <code>ltr</code> query parser.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;queryParser name="ltr" class="org.apache.solr.ltr.search.LTRQParserPlugin"/&gt;</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Configuration of the feature values cache.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;cache name="QUERY_DOC_FV"
+       class="solr.search.CaffeineCache"
+       size="4096"
+       initialSize="2048"
+       autowarmCount="4096"
+       regenerator="solr.search.NoOpRegenerator" /&gt;</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Declaration of the <code>[features]</code> transformer.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;transformer name="features" class="org.apache.solr.ltr.response.transform.LTRFeatureLoggerTransformerFactory"&gt;
+  &lt;str name="fvCacheName"&gt;QUERY_DOC_FV&lt;/str&gt;
+&lt;/transformer&gt;</code></pre>
+</div>
+</div>
+</li>
+<li>
+<p>Declaration of the <code>[interleaving]</code> transformer.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;transformer name="interleaving" class="org.apache.solr.ltr.response.transform.LTRInterleavingTransformerFactory"/&gt;</code></pre>
+</div>
+</div>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="ltr-lifecycle"><a class="anchor" href="#ltr-lifecycle"></a>LTR Lifecycle</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="feature-stores"><a class="anchor" href="#feature-stores"></a>Feature Stores</h3>
+<div class="paragraph">
+<p>It is recommended that you organise all your features into stores which are akin to namespaces:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>Features within a store must be named uniquely.</p>
+</li>
+<li>
+<p>Across stores identical or similar features can share the same name.</p>
+</li>
+<li>
+<p>If no store name is specified then the default <code>_DEFAULT_</code> feature store will be used.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>To discover the names of all your feature stores:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/schema/feature-store</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To inspect the content of the <code>commonFeatureStore</code> feature store:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/schema/feature-store/commonFeatureStore</code></pre>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="models"><a class="anchor" href="#models"></a>Models</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>A model uses features from exactly one feature store.</p>
+</li>
+<li>
+<p>If no store is specified then the default <code>_DEFAULT_</code> feature store will be used.</p>
+</li>
+<li>
+<p>A model need not use all the features defined in a feature store.</p>
+</li>
+<li>
+<p>Multiple models can use the same feature store.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>To log features for <code>currentFeatureStore</code> 's features:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/query?q=test&amp;fl=id,score,[features store=currentFeatureStore]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To log features for <code>nextFeatureStore</code> features whilst reranking with <code>currentModel</code> based on <code>currentFeatureStore</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/query?q=test&amp;rq={!ltr model=currentModel reRankDocs=100}&amp;fl=id,score,[features store=nextFeatureStore]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To view all models:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/schema/model-store</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To delete the <code>currentModel</code> model:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">curl -XDELETE 'http://localhost:8983/solr/techproducts/schema/model-store/currentModel'</code></pre>
+</div>
+</div>
+<div class="admonitionblock important">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-important" title="Important"></i>
+</td>
+<td class="content">
+A feature store may be deleted only when there are no models using it.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>To delete the <code>currentFeatureStore</code> feature store:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">curl -XDELETE 'http://localhost:8983/solr/techproducts/schema/feature-store/currentFeatureStore'</code></pre>
+</div>
+</div>
+<div class="sect3">
+<h4 id="using-large-models"><a class="anchor" href="#using-large-models"></a>Using Large Models</h4>
+<div class="paragraph">
+<p>With SolrCloud, large models may fail to upload due to the limitation of ZooKeeper&#8217;s buffer.
+In this case, <code>DefaultWrapperModel</code> may help you to separate the model definition from uploaded file.</p>
+</div>
+<div class="paragraph">
+<p>Assuming that you consider to use a large model placed at <code>/path/to/models/myModel.json</code> through <code>DefaultWrapperModel</code>.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
+  "store" : "largeModelsFeatureStore",
+  "name" : "myModel",
+  "class" : "...",
+  "features" : [
+    "..."
+  ],
+  "params" : {
+    "...": "..."
+  }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>First, add the directory to Solr&#8217;s resource paths with a <a href="../configuration-guide/libs.html#lib-directives-in-solrconfig" class="xref page"><code>&lt;lib/&gt;</code> directive</a>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">  &lt;lib dir="/path/to" regex="models" /&gt;</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Then, configure <code>DefaultWrapperModel</code> to wrap <code>myModel.json</code>:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
+  "store" : "largeModelsFeatureStore",
+  "name" : "myWrapperModel",
+  "class" : "org.apache.solr.ltr.model.DefaultWrapperModel",
+  "params" : {
+    "resource" : "myModel.json"
+  }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p><code>myModel.json</code> will be loaded during the initialization and be able to use by specifying <code>model=myWrapperModel</code>.</p>
+</div>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-note" title="Note"></i>
+</td>
+<td class="content">
+No <code>"features"</code> are configured in <code>myWrapperModel</code> because the features of the wrapped model (<code>myModel</code>) will be used; also note that the <code>"store"</code> configured for the wrapper model must match that of the wrapped model i.e., in this example the feature store called <code>largeModelsFeatureStore</code> is used.
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock caution">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-caution" title="Caution"></i>
+</td>
+<td class="content">
+<code>&lt;lib dir="/path/to/models" regex=".*\.json" /&gt;</code> doesn&#8217;t work as expected in this case, because <code>SolrResourceLoader</code> considers given resources as JAR if <code>&lt;lib /&gt;</code> indicates files.
+</td>
+</tr>
+</table>
+</div>
+<div class="paragraph">
+<p>As an alternative to the above-described <code>DefaultWrapperModel</code>, it is possible to <a href="../deployment-guide/zookeeper-ensemble.html#increasing-the-file-size-limit" class="xref page">increase ZooKeeper&#8217;s file size limit</a>.</p>
+</div>
+</div>
+</div>
+<div class="sect2">
+<h3 id="applying-changes"><a class="anchor" href="#applying-changes"></a>Applying Changes</h3>
+<div class="paragraph">
+<p>The feature store and the model store are both <a href="../configuration-guide/managed-resources.html" class="xref page">Managed Resources</a>.
+Changes made to managed resources are not applied to the active Solr components until the Solr collection (or Solr core in single server mode) is reloaded.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
 <h2 id="quick-start-with-ltr"><a class="anchor" href="#quick-start-with-ltr"></a>Quick Start with LTR</h2>
 <div class="sectionbody">
 <div class="paragraph">
@@ -1410,9 +1680,9 @@ In the form of JSON files your trained m
 </div>
 </div>
 <div class="sect2">
-<h3 id="extracting-features"><a class="anchor" href="#extracting-features"></a>Extracting Features</h3>
+<h3 id="logging-features"><a class="anchor" href="#logging-features"></a>Logging Features</h3>
 <div class="paragraph">
-<p>To extract features as part of a query, add <code>[features]</code> to the <code>fl</code> parameter, for example:</p>
+<p>To log features as part of a query, add <code>[features]</code> to the <code>fl</code> parameter, for example:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1443,6 +1713,147 @@ In the form of JSON files your trained m
   }}</code></pre>
 </div>
 </div>
+<div class="sect3">
+<h4 id="feature-logging-parameters"><a class="anchor" href="#feature-logging-parameters"></a>Feature Logging Parameters</h4>
+<div class="paragraph">
+<p>The feature logger transformer accepts the parameters described below.
+Examples on how to use them can be found in the <a href="#ltr-examples">LTR Examples</a> section below.</p>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>store</code></dt>
+<dd>
+<table class="tableblock frame-none grid-all fit-content">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">No Re-Ranking</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Default: <code>_DEFAULT_</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Re-Ranking</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Default: model feature store</p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>This parameter specifies the feature store to use for logging features.</p>
+</div>
+<div class="paragraph">
+<p>In a reranking query, the default feature store used is the model feature store (e.g. <code>[features]</code>).</p>
+</div>
+</dd>
+<dt class="hdlist1"><code>logAll</code></dt>
+<dd>
+<table class="tableblock frame-none grid-all fit-content">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">No Re-Ranking</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Default: <code>true</code></p></td>
+</tr>
+</tbody>
+</table>
+<table class="tableblock frame-none grid-all fit-content">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Re-Ranking</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Logger and Model have same feature store</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Default: <code>false</code></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Re-Ranking</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Logger and Model have different feature store</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Default: <code>true</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>This parameter specifies the features to log.</p>
+</div>
+<div class="paragraph">
+<p>If set to <code>true</code> all the features from the feature store are printed.</p>
+</div>
+</dd>
+</dl>
+</div>
+<div class="paragraph">
+<p>If set to <code>false</code> only the features used by the model are printed.</p>
+</div>
+<div class="admonitionblock caution">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-caution" title="Caution"></i>
+</td>
+<td class="content">
+When no re-ranking query is passed, only <code>logAll</code> = 'true' is supported. Passing <code>false</code> will cause a Solr exception.
+</td>
+</tr>
+</table>
+</div>
+<div class="admonitionblock caution">
+<table>
+<tr>
+<td class="icon">
+<i class="fa icon-caution" title="Caution"></i>
+</td>
+<td class="content">
+In a logging scenario where a re-ranking query is passed, if the logger <code>store</code> is different from the model <code>store</code>, only <code>logAll</code> = 'true' is supported. Passing <code>false</code> will cause a Solr exception.
+</td>
+</tr>
+</table>
+</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1"><code>format</code></dt>
+<dd>
+<table class="tableblock frame-none grid-all fit-content">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Optional</p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">Default: <code>dense</code></p></td>
+</tr>
+</tbody>
+</table>
+<div class="paragraph">
+<p>This parameter specifies the format to use for logging features. The supported values are: <code>dense</code> and <code>sparse</code>.</p>
+</div>
+<div class="paragraph">
+<p>You can change the default behavior to be sparse, putting <code>&lt;str name="defaultFormat"&gt;sparse&lt;/str&gt;</code> in the <a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.html">feature logger transformer</a> declaration in <code>solrconfig.xml</code> as follows:</p>
+</div>
+</dd>
+</dl>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;transformer name="features" class="org.apache.solr.ltr.response.transform.LTRFeatureLoggerTransformerFactory"&gt;
+  &lt;str name="fvCacheName"&gt;QUERY_DOC_FV&lt;/str&gt;
+  &lt;str name="defaultFormat"&gt;sparse&lt;/str&gt;
+  &lt;str name="csvKeyValueDelimiter"&gt;:&lt;/str&gt;
+  &lt;str name="csvFeatureSeparator"&gt; &lt;/str&gt;
+&lt;/transformer&gt;</code></pre>
+</div>
+</div>
+</div>
 </div>
 <div class="sect2">
 <h3 id="uploading-a-model"><a class="anchor" href="#uploading-a-model"></a>Uploading a Model</h3>
@@ -1634,13 +2045,13 @@ To rerank the results of a query, interl
 </div>
 </div>
 <div class="paragraph">
-<p>Currently the only (and default) algorithm supported is 'TeamDraft'.</p>
+<p>Currently, the only (and default) algorithm supported is 'TeamDraft'.</p>
 </div>
 </div>
 <div class="sect2">
 <h3 id="external-feature-information"><a class="anchor" href="#external-feature-information"></a>External Feature Information</h3>
 <div class="paragraph">
-<p>The <a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/ValueFeature.html">ValueFeature</a> and <a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/SolrFeature.html">SolrFeature</a> classes support the use of external feature information, <code>efi</code> for short.</p>
+<p>The <a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/ValueFeature.html">ValueFeature</a> and <a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/SolrFeature.html">SolrFeature</a> classes support the use of external feature information, <code>efi</code> for short.</p>
 </div>
 <div class="sect3">
 <h4 id="uploading-features-2"><a class="anchor" href="#uploading-features-2"></a>Uploading Features</h4>
@@ -1691,14 +2102,11 @@ To rerank the results of a query, interl
 ]</code></pre>
 </div>
 </div>
-<div class="paragraph">
-<p>As an aside, you may have noticed that the <code>myEfiFeatures.json</code> example uses <code>"store":"myEfiFeatureStore"</code> attributes: read more about feature <code>store</code> in the <a href="#ltr-lifecycle">LTR Lifecycle</a> section of this page.</p>
-</div>
 </div>
 <div class="sect3">
-<h4 id="extracting-features-2"><a class="anchor" href="#extracting-features-2"></a>Extracting Features</h4>
+<h4 id="logging-features-2"><a class="anchor" href="#logging-features-2"></a>Logging Features</h4>
 <div class="paragraph">
-<p>To extract <code>myEfiFeatureStore</code> features as part of a query, add <code>efi.*</code> parameters to the <code>[features]</code> part of the <code>fl</code> parameter, for example:</p>
+<p>To log <code>myEfiFeatureStore</code> features as part of a query, add <code>efi.*</code> parameters to the <code>[features]</code> part of the <code>fl</code> parameter, for example:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1774,9 +2182,9 @@ To rerank the results of a query, interl
 </div>
 </div>
 <div class="sect3">
-<h4 id="extracting-features-while-reranking"><a class="anchor" href="#extracting-features-while-reranking"></a>Extracting Features While Reranking</h4>
+<h4 id="logging-features-while-reranking"><a class="anchor" href="#logging-features-while-reranking"></a>Logging Features While Reranking</h4>
 <div class="paragraph">
-<p>To extract features for <code>myEfiFeatureStore</code> features while still reranking with <code>myModel</code>:</p>
+<p>To log features for <code>myEfiFeatureStore</code> features while still reranking with <code>myModel</code>:</p>
 </div>
 <div class="listingblock">
 <div class="content">
@@ -1786,130 +2194,37 @@ To rerank the results of a query, interl
 <div class="paragraph">
 <p>Notice the absence of <code>efi.*</code> parameters in the <code>rq</code> parameter (because <code>myModel</code> does not use <code>efi</code> feature) and the presence of <code>efi.*</code> parameters in the <code>[features]</code> part of the <code>fl</code> parameter (because <code>myEfiFeatureStore</code> contains <code>efi</code> features).</p>
 </div>
-<div class="paragraph">
-<p>Read more about model evolution in the <a href="#ltr-lifecycle">LTR Lifecycle</a> section of this page.</p>
-</div>
 </div>
 </div>
 <div class="sect2">
 <h3 id="training-example"><a class="anchor" href="#training-example"></a>Training Example</h3>
 <div class="paragraph">
-<p>Example training data and a demo <code>train_and_upload_demo_model.py</code> script can be found in the <code>solr/modules/ltr/example</code> folder in the <a href="https://gitbox.apache.org/repos/asf?p=solr.git;a=tree;f=solr/modules/ltr/example">Apache Solr Git repository</a> (mirrored on <a href="https://github.com/apache/solr/tree/releases/solr/9.2.1/solr/modules/ltr/example">github.com</a>).
+<p>Example training data and a demo <code>train_and_upload_demo_model.py</code> script can be found in the <code>solr/modules/ltr/example</code> folder in the <a href="https://gitbox.apache.org/repos/asf?p=solr.git;a=tree;f=solr/modules/ltr/example">Apache Solr Git repository</a> (mirrored on <a href="https://github.com/apache/solr/tree/releases/solr/9.3.0/solr/modules/ltr/example">github.com</a>).
 This example folder is not shipped in the Solr binary release.</p>
 </div>
 </div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="installation-of-ltr"><a class="anchor" href="#installation-of-ltr"></a>Installation of LTR</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>The ltr module requires the <code>modules/ltr/lib/solr-ltr-*.jar</code> JARs.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="ltr-configuration"><a class="anchor" href="#ltr-configuration"></a>LTR Configuration</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Learning-To-Rank is a module and therefore its plugins must be configured in <code>solrconfig.xml</code>.</p>
-</div>
-<div class="sect2">
-<h3 id="minimum-requirements"><a class="anchor" href="#minimum-requirements"></a>Minimum Requirements</h3>
-<div class="ulist">
-<ul>
-<li>
-<p>Include the required module JARs.
-Note that by default paths are relative to the Solr core so they may need adjustments to your configuration, or an explicit specification of the <code>$solr.install.dir</code>.</p>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;lib dir="${solr.install.dir:../../../..}/modules/ltr/lib/" regex=".*\.jar" /&gt;</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>Declaration of the <code>ltr</code> query parser.</p>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;queryParser name="ltr" class="org.apache.solr.ltr.search.LTRQParserPlugin"/&gt;</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>Configuration of the feature values cache.</p>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;cache name="QUERY_DOC_FV"
-       class="solr.search.CaffeineCache"
-       size="4096"
-       initialSize="2048"
-       autowarmCount="4096"
-       regenerator="solr.search.NoOpRegenerator" /&gt;</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>Declaration of the <code>[features]</code> transformer.</p>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;transformer name="features" class="org.apache.solr.ltr.response.transform.LTRFeatureLoggerTransformerFactory"&gt;
-  &lt;str name="fvCacheName"&gt;QUERY_DOC_FV&lt;/str&gt;
-&lt;/transformer&gt;</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>Declaration of the <code>[interleaving]</code> transformer.</p>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;transformer name="interleaving" class="org.apache.solr.ltr.response.transform.LTRInterleavingTransformerFactory"/&gt;</code></pre>
-</div>
-</div>
-</li>
-</ul>
-</div>
-</div>
 <div class="sect2">
 <h3 id="advanced-options"><a class="anchor" href="#advanced-options"></a>Advanced Options</h3>
 <div class="sect3">
 <h4 id="ltrthreadmodule"><a class="anchor" href="#ltrthreadmodule"></a>LTRThreadModule</h4>
 <div class="paragraph">
 <p>A thread module can be configured for the query parser and/or the transformer to parallelize the creation of feature weights.
-For details, please refer to the <a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/LTRThreadModule.html">LTRThreadModule</a> javadocs.</p>
-</div>
-</div>
-<div class="sect3">
-<h4 id="feature-vector-customization"><a class="anchor" href="#feature-vector-customization"></a>Feature Vector Customization</h4>
-<div class="paragraph">
-<p>The features transformer returns dense CSV values such as <code>featureA=0.1,featureB=0.2,featureC=0.3,featureD=0.0</code>.</p>
-</div>
-<div class="paragraph">
-<p>For sparse CSV output such as <code>featureA:0.1 featureB:0.2 featureC:0.3</code> you can customize the <a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/response/transform/LTRFeatureLoggerTransformerFactory.html">feature logger transformer</a> declaration in <code>solrconfig.xml</code> as follows:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">&lt;transformer name="features" class="org.apache.solr.ltr.response.transform.LTRFeatureLoggerTransformerFactory"&gt;
-  &lt;str name="fvCacheName"&gt;QUERY_DOC_FV&lt;/str&gt;
-  &lt;str name="defaultFormat"&gt;sparse&lt;/str&gt;
-  &lt;str name="csvKeyValueDelimiter"&gt;:&lt;/str&gt;
-  &lt;str name="csvFeatureSeparator"&gt; &lt;/str&gt;
-&lt;/transformer&gt;</code></pre>
-</div>
+For details, please refer to the <a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/LTRThreadModule.html">LTRThreadModule</a> javadocs.</p>
 </div>
 </div>
 <div class="sect3">
 <h4 id="models-handling-features-null-values"><a class="anchor" href="#models-handling-features-null-values"></a>Models handling features' null values</h4>
 <div class="paragraph">
-<p>This feature is available only for <a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.html">MultipleAdditiveTreesModel</a>.</p>
+<p>This feature is available only for <a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/model/MultipleAdditiveTreesModel.html">MultipleAdditiveTreesModel</a>.</p>
 </div>
 <div class="paragraph">
-<p>In some scenarios a null value for a feature has a different meaning than a zero value. There are models that are trained to distinguish the two (e.g. <a href="https://xgboost.readthedocs.io/en/stable/faq.html#how-to-deal-with-missing-values" class="bare">https://xgboost.readthedocs.io/en/stable/faq.html#how-to-deal-with-missing-values</a>), in Solr an additional <code>"missing"</code> branch parameter has been introduced to support this feature.</p>
+<p>In some scenarios a null value for a feature has a different meaning than a zero value. There are models that are trained to distinguish the two (e.g. <a href="https://xgboost.readthedocs.io/en/stable/faq.html#how-to-deal-with-missing-values" class="bare">https://xgboost.readthedocs.io/en/stable/faq.html#how-to-deal-with-missing-values</a>), in Solr an additional <code>missing</code> branch parameter has been introduced to support this feature.</p>
 </div>
 <div class="paragraph">
 <p>This defines the branch to follow when the corresponding feature value is null. With the default configuration a null and a zero value have the same meaning.</p>
 </div>
 <div class="paragraph">
-<p>To handle null values, the <code>"myFeatures.json"</code> file needs to be modified. A <code>"defaultValue"</code> parameter with a <code>"NaN"</code> value needs to be added to each feature that can assume a null value.</p>
+<p>To handle null values, the <code>myFeatures.json</code> file needs to be modified. A <code>defaultValue</code> parameter with a <code>NaN</code> value needs to be added to each feature that can assume a null value.</p>
 </div>
 <div class="listingblock">
 <div class="title">Example: /path/myFeatures.json</div>
@@ -1939,10 +2254,10 @@ For details, please refer to the <a href
 <div class="ulist">
 <ul>
 <li>
-<p><code>"isNullSameAsZero"</code> needs to be defined in the model <code>"params"</code> and set to <code>"false"</code>;</p>
+<p><code>isNullSameAsZero</code> needs to be defined in the model <code>params</code> and set to <code>false</code>;</p>
 </li>
 <li>
-<p>the <code>"missing"</code> parameter needs to be added to each branch where the corresponding feature supports null values. This can assume one value between <code>"left"</code> and <code>"right"</code>.</p>
+<p>the <code>missing</code> parameter needs to be added to each branch where the corresponding feature supports null values. This can assume one value between <code>left</code> and <code>right</code>.</p>
 </li>
 </ul>
 </div>
@@ -1986,7 +2301,7 @@ For details, please refer to the <a href
 </div>
 </div>
 <div class="paragraph">
-<p>When isNullSameAsZero is <code>"false"</code> for your model, the feature vector changes.</p>
+<p>When <code>isNullSameAsZero</code> is <code>false</code> for your model, the feature vector changes.</p>
 </div>
 <div class="ulist">
 <ul>
@@ -2002,8 +2317,7 @@ For details, please refer to the <a href
 <p>e.g.</p>
 </div>
 <div class="paragraph">
-<p>given the features defined in <a href="#models-handling-features-null-values">Models handling features' null values</a>.
-If their values are <code>matchedTitle=0</code> and <code>productReviewScore=0</code>, the sparse format will return <code>productReviewScore:0</code> (0 is the default value of <code>matchedTitle=0</code> and therefore it is not returned, 0 is not the default value of <code>productReviewScore=0</code> and therefore it is returned).</p>
+<p>given the features defined before; if their values are <code>matchedTitle=0</code> and <code>productReviewScore=0</code>, the sparse format will return <code>productReviewScore:0</code> (0 is the default value of <code>matchedTitle=0</code> and therefore it is not returned, 0 is not the default value of <code>productReviewScore=0</code> and therefore it is returned).</p>
 </div>
 </div>
 <div class="sect3">
@@ -2012,7 +2326,7 @@ If their values are <code>matchedTitle=0
 <dl>
 <dt class="hdlist1">How does Solr Learning-To-Rank work under the hood?</dt>
 <dd>
-<p>Please refer to the <code>ltr</code> <a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/package-summary.html">javadocs</a> for an implementation overview.</p>
+<p>Please refer to the <code>ltr</code> <a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/package-summary.html">javadocs</a> for an implementation overview.</p>
 </dd>
 <dt class="hdlist1">How could I write additional models and/or features?</dt>
 <dd>
@@ -2021,16 +2335,16 @@ Related links:</p>
 <div class="ulist">
 <ul>
 <li>
-<p><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/model/LTRScoringModel.html">LTRScoringModel javadocs</a></p>
+<p><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/model/LTRScoringModel.html">LTRScoringModel javadocs</a></p>
 </li>
 <li>
-<p><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/feature/Feature.html">Feature javadocs</a></p>
+<p><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/feature/Feature.html">Feature javadocs</a></p>
 </li>
 <li>
-<p><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/norm/Normalizer.html">Normalizer javadocs</a></p>
+<p><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/norm/Normalizer.html">Normalizer javadocs</a></p>
 </li>
 <li>
-<p><a href="https://solr.apache.org/docs/9_2_1/modules/ltr/org/apache/solr/ltr/interleaving/Interleaving.html">Interleaving javadocs</a></p>
+<p><a href="https://solr.apache.org/docs/9_3_0/modules/ltr/org/apache/solr/ltr/interleaving/Interleaving.html">Interleaving javadocs</a></p>
 </li>
 <li>
 <p><a href="https://cwiki.apache.org/confluence/display/solr/HowToContribute" class="bare">https://cwiki.apache.org/confluence/display/solr/HowToContribute</a></p>
@@ -2048,203 +2362,10 @@ Related links:</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="ltr-lifecycle"><a class="anchor" href="#ltr-lifecycle"></a>LTR Lifecycle</h2>
+<h2 id="ltr-examples"><a class="anchor" href="#ltr-examples"></a>LTR Examples</h2>
 <div class="sectionbody">
 <div class="sect2">
-<h3 id="feature-stores"><a class="anchor" href="#feature-stores"></a>Feature Stores</h3>
-<div class="paragraph">
-<p>It is recommended that you organise all your features into stores which are akin to namespaces:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Features within a store must be named uniquely.</p>
-</li>
-<li>
-<p>Across stores identical or similar features can share the same name.</p>
-</li>
-<li>
-<p>If no store name is specified then the default <code>_DEFAULT_</code> feature store will be used.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>To discover the names of all your feature stores:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/schema/feature-store</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To inspect the content of the <code>commonFeatureStore</code> feature store:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/schema/feature-store/commonFeatureStore</code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="models"><a class="anchor" href="#models"></a>Models</h3>
-<div class="ulist">
-<ul>
-<li>
-<p>A model uses features from exactly one feature store.</p>
-</li>
-<li>
-<p>If no store is specified then the default <code>_DEFAULT_</code> feature store will be used.</p>
-</li>
-<li>
-<p>A model need not use all the features defined in a feature store.</p>
-</li>
-<li>
-<p>Multiple models can use the same feature store.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>To extract features for <code>currentFeatureStore</code> 's features:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/query?q=test&amp;fl=id,score,[features store=currentFeatureStore]</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To extract features for <code>nextFeatureStore</code> features whilst reranking with <code>currentModel</code> based on <code>currentFeatureStore</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/query?q=test&amp;rq={!ltr model=currentModel reRankDocs=100}&amp;fl=id,score,[features store=nextFeatureStore]</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To view all models:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/schema/model-store</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To delete the <code>currentModel</code> model:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">curl -XDELETE 'http://localhost:8983/solr/techproducts/schema/model-store/currentModel'</code></pre>
-</div>
-</div>
-<div class="admonitionblock important">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-important" title="Important"></i>
-</td>
-<td class="content">
-A feature store may be deleted only when there are no models using it.
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>To delete the <code>currentFeatureStore</code> feature store:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">curl -XDELETE 'http://localhost:8983/solr/techproducts/schema/feature-store/currentFeatureStore'</code></pre>
-</div>
-</div>
-<div class="sect3">
-<h4 id="using-large-models"><a class="anchor" href="#using-large-models"></a>Using Large Models</h4>
-<div class="paragraph">
-<p>With SolrCloud, large models may fail to upload due to the limitation of ZooKeeper&#8217;s buffer.
-In this case, <code>DefaultWrapperModel</code> may help you to separate the model definition from uploaded file.</p>
-</div>
-<div class="paragraph">
-<p>Assuming that you consider to use a large model placed at <code>/path/to/models/myModel.json</code> through <code>DefaultWrapperModel</code>.</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
-  "store" : "largeModelsFeatureStore",
-  "name" : "myModel",
-  "class" : ...,
-  "features" : [
-    ...
-  ],
-  "params" : {
-    ...
-  }
-}</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>First, add the directory to Solr&#8217;s resource paths with a <a href="../configuration-guide/libs.html#lib-directives-in-solrconfig" class="xref page"><code>&lt;lib/&gt;</code> directive</a>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml">  &lt;lib dir="/path/to" regex="models" /&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then, configure <code>DefaultWrapperModel</code> to wrap <code>myModel.json</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
-  "store" : "largeModelsFeatureStore",
-  "name" : "myWrapperModel",
-  "class" : "org.apache.solr.ltr.model.DefaultWrapperModel",
-  "params" : {
-    "resource" : "myModel.json"
-  }
-}</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p><code>myModel.json</code> will be loaded during the initialization and be able to use by specifying <code>model=myWrapperModel</code>.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-No <code>"features"</code> are configured in <code>myWrapperModel</code> because the features of the wrapped model (<code>myModel</code>) will be used; also note that the <code>"store"</code> configured for the wrapper model must match that of the wrapped model i.e., in this example the feature store called <code>largeModelsFeatureStore</code> is used.
-</td>
-</tr>
-</table>
-</div>
-<div class="admonitionblock caution">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-caution" title="Caution"></i>
-</td>
-<td class="content">
-<code>&lt;lib dir="/path/to/models" regex=".*\.json" /&gt;</code> doesn&#8217;t work as expected in this case, because <code>SolrResourceLoader</code> considers given resources as JAR if <code>&lt;lib /&gt;</code> indicates files.
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>As an alternative to the above-described <code>DefaultWrapperModel</code>, it is possible to <a href="../deployment-guide/zookeeper-ensemble.html#increasing-the-file-size-limit" class="xref page">increase ZooKeeper&#8217;s file size limit</a>.</p>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="applying-changes"><a class="anchor" href="#applying-changes"></a>Applying Changes</h3>
-<div class="paragraph">
-<p>The feature store and the model store are both <a href="../configuration-guide/managed-resources.html" class="xref page">Managed Resources</a>.
-Changes made to managed resources are not applied to the active Solr components until the Solr collection (or Solr core in single server mode) is reloaded.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="ltr-examples"><a class="anchor" href="#ltr-examples"></a>LTR Examples</h3>
-<div class="sect3">
-<h4 id="one-feature-store-multiple-ranking-models"><a class="anchor" href="#one-feature-store-multiple-ranking-models"></a>One Feature Store, Multiple Ranking Models</h4>
+<h3 id="one-feature-store-multiple-ranking-models"><a class="anchor" href="#one-feature-store-multiple-ranking-models"></a>One Feature Store, Multiple Ranking Models</h3>
 <div class="ulist">
 <ul>
 <li>
@@ -2348,8 +2469,8 @@ Changes made to managed resources are no
 </div>
 </div>
 </div>
-<div class="sect3">
-<h4 id="model-evolution"><a class="anchor" href="#model-evolution"></a>Model Evolution</h4>
+<div class="sect2">
+<h3 id="model-evolution"><a class="anchor" href="#model-evolution"></a>Model Evolution</h3>
 <div class="ulist">
 <ul>
 <li>
@@ -2499,6 +2620,301 @@ Changes made to managed resources are no
 </div>
 </div>
 </div>
+<div class="sect2">
+<h3 id="features-logging"><a class="anchor" href="#features-logging"></a>Features Logging</h3>
+<div class="sect3">
+<h4 id="logall-parameter"><a class="anchor" href="#logall-parameter"></a>logAll parameter</h4>
+<div class="paragraph">
+<p>Suppose to have a complete feature store like:</p>
+</div>
+<div class="listingblock">
+<div class="title">Example: /path/completeFeaturesStore.json</div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">[
+  {
+    "store" : "completeFeaturesStore",
+    "name" : "documentRecency",
+    "class" : "org.apache.solr.ltr.feature.SolrFeature",
+    "params" : {
+      "q" : "{!func}recip( ms(NOW,last_modified), 3.16e-11, 1, 1)"
+    }
+  },
+  {
+    "store" : "completeFeaturesStore",
+    "name" : "isBook",
+    "class" : "org.apache.solr.ltr.feature.SolrFeature",
+    "params" : {
+      "fq": ["{!terms f=cat}book"]
+    }
+  },
+  {
+    "store" : "completeFeaturesStore",
+    "name" : "originalScore",
+    "class" : "org.apache.solr.ltr.feature.OriginalScoreFeature",
+    "params" : {}
+  }
+]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>And suppose to have a simple linear model that uses just two of the <code>completeFeaturesStore</code> 's features:</p>
+</div>
+<div class="listingblock">
+<div class="title">Example: /path/linearModel.json</div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
+  "store" : "completeFeaturesStore",
+  "name" : "linearModel",
+  "class" : "org.apache.solr.ltr.model.LinearModel",
+  "features" : [
+    { "name" : "isBook" },
+    { "name" : "originalScore" }
+  ],
+  "params" : {
+    "weights" : {
+      "isBook" : 1.0,
+      "originalScore" : 0.5
+    }
+  }
+}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Making a logging + re-ranking query without defining the <code>store</code> and <code>logAll</code> parameters will print only the model features (default: <code>store=model store</code> and <code>logAll=false</code>).</p>
+</div>
+<div class="paragraph">
+<p>The query:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/query?q=test&amp;rq={!ltr model=linearModel reRankDocs=100}&amp;fl=id,score,[features]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The output:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
+  "responseHeader":{
+    "status":0,
+    "QTime":0,
+    "params":{
+      "q":"test",
+      "fl":"id,score,[features]",
+      "rq":"{!ltr model=linearModel reRankDocs=100}"}},
+  "response":{"numFound":2,"start":0,"maxScore":1.0005897,"docs":[
+      {
+        "id":"GB18030TEST",
+        "score":1.0005897,
+        "[features]":"isBook=0.0,originalScore=1.959392"},
+      {
+        "id":"UTF8TEST",
+        "score":0.79656565,
+        "[features]":"isBook=0.0,originalScore=1.5513437"}]
+  }}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Making a logging + re-ranking query without defining the <code>store</code> parameter and setting <code>logAll = true</code> will print all the features from the model store.</p>
+</div>
+<div class="paragraph">
+<p>The query:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/query?q=test&amp;rq={!ltr model=linearModel reRankDocs=100}&amp;fl=id,score,[features logAll=true]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The output:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
+  "responseHeader":{
+    "status":0,
+    "QTime":0,
+    "params":{
+      "q":"test",
+      "fl":"id,score,[features logAll=true]",
+      "rq":"{!ltr model=linearModel reRankDocs=100}"}},
+  "response":{"numFound":2,"start":0,"maxScore":1.0005897,"docs":[
+      {
+        "id":"GB18030TEST",
+        "score":1.0005897,
+        "[features]":"documentRecency=0.020893792,isBook=0.0,originalScore=1.959392"},
+      {
+        "id":"UTF8TEST",
+        "score":0.79656565,
+        "[features]":"documentRecency=0.020893792,isBook=0.0,originalScore=1.5513437"}]
+  }}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Suppose to have a different feature store like:</p>
+</div>
+<div class="listingblock">
+<div class="title">Example: /path/differentFeaturesStore.json</div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">[
+  {
+    "store": "differentFeaturesStore",
+    "name": "valueFeature1",
+    "class": "org.apache.solr.ltr.feature.FieldValueFeature",
+    "params": {
+        "field": "field1"
+    }
+  },
+  {
+    "store": "differentFeaturesStore",
+    "name": "valueFeature2",
+    "class": "org.apache.solr.ltr.feature.FieldValueFeature",
+    "params": {
+        "field": "field2"
+    }
+  }
+]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Making a logging + re-ranking query defining a <code>store</code> parameter different from the model store without defining the <code>logAll</code> parameter will print all the features from the selected feature store (default: <code>logAll=true</code>).</p>
+</div>
+<div class="paragraph">
+<p>The query:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/query?q=test&amp;rq={!ltr model=linearModel reRankDocs=100}&amp;fl=id,score,[features store=differentFeaturesStore]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The output:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
+  "responseHeader":{
+    "status":0,
+    "QTime":0,
+    "params":{
+      "q":"test",
+      "fl":"id,score,[features store=differentFeaturesStore]",
+      "rq":"{!ltr model=linearModel reRankDocs=100}"}},
+  "response":{"numFound":2,"start":0,"maxScore":1.0005897,"docs":[
+      {
+        "id":"GB18030TEST",
+        "score":1.0005897,
+        "[features]":"valueFeature1=0.1,valueFeature2=2.0"},
+      {
+        "id":"UTF8TEST",
+        "score":0.79656565,
+        "[features]":"valueFeature1=1.3,valueFeature2=4.0"}]
+  }}</code></pre>
+</div>
+</div>
+</div>
+<div class="sect3">
+<h4 id="format-parameter"><a class="anchor" href="#format-parameter"></a>format parameter</h4>
+<div class="paragraph">
+<p>Suppose to have a feature store like:</p>
+</div>
+<div class="listingblock">
+<div class="title">Example: /path/myFeaturesStore.json</div>
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">[
+  {
+    "store": "myFeaturesStore",
+    "name": "featureA",
+    "class": "org.apache.solr.ltr.feature.FieldValueFeature",
+    "params": {
+        "field": "field1"
+    }
+  },
+  {
+    "store": "myFeaturesStore",
+    "name": "featureB",
+    "class": "org.apache.solr.ltr.feature.FieldValueFeature",
+    "params": {
+        "field": "field2"
+    }
+  },
+  {
+    "store": "myFeaturesStore",
+    "name": "featureC",
+    "class": "org.apache.solr.ltr.feature.FieldValueFeature",
+    "params": {
+        "field": "field3"
+    }
+  }
+]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To return dense CSV values such as: <code>featureA=0.1,featureB=0.2,featureC=0.0</code>, pass the <code>format=dense</code> parameter to the feature logger transformer:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/query?q=test&amp;fl=id,score,[features store=myFeaturesStore format=dense]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The output:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
+  "responseHeader":{
+    "status":0,
+    "QTime":0,
+    "params":{
+      "q":"test",
+      "fl":"id,score,[features store=myFeaturesStore format=dense]"}},
+  "response":{"numFound":2,"start":0,"maxScore":1.0005897,"docs":[
+      {
+        "id":"GB18030TEST",
+        "score":1.0005897,
+        "[features]":"featureA=0.1,featureB=0.2,featureC=0.0"},
+      {
+        "id":"UTF8TEST",
+        "score":0.79656565,
+        "[features]":"featureA=1.3,featureB=0.0,featureC=2.1"}]
+  }}</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>To return sparse CSV values such as: <code>featureA=0.1,featureB=0.2</code>, pass the <code>format=sparse</code> parameter to the feature logger transformer:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-text hljs" data-lang="text">http://localhost:8983/solr/techproducts/query?q=test&amp;fl=id,score,[features store=myFeaturesStore format=sparse]</code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>The output:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="highlightjs highlight"><code class="language-json hljs" data-lang="json">{
+  "responseHeader":{
+    "status":0,
+    "QTime":0,
+    "params":{
+      "q":"test",
+      "fl":"id,score,[features store=myFeaturesStore format=sparse]"}},
+  "response":{"numFound":2,"start":0,"maxScore":1.0005897,"docs":[
+      {
+        "id":"GB18030TEST",
+        "score":1.0005897,
+        "[features]":"featureA=0.1,featureB=0.2"},
+      {
+        "id":"UTF8TEST",
+        "score":0.79656565,
+        "[features]":"featureA=1.3,featureC=2.1"}]
+  }}</code></pre>
+</div>
+</div>
+</div>
 </div>
 </div>
 </div>

Modified: sites/solr/guide/solr/latest/query-guide/loading.html
URL: http://svn.apache.org/viewvc/sites/solr/guide/solr/latest/query-guide/loading.html?rev=1083697&r1=1083696&r2=1083697&view=diff
==============================================================================
--- sites/solr/guide/solr/latest/query-guide/loading.html (original)
+++ sites/solr/guide/solr/latest/query-guide/loading.html Fri Jul 21 18:07:42 2023
@@ -39,7 +39,7 @@
         <div class="navbar-item has-dropdown is-hoverable">
           <a class="navbar-link" href="#">Resources</a>
           <div class="navbar-dropdown">
-            <a class="navbar-item" href="https://solr.apache.org/docs/9_2_1/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a>
+            <a class="navbar-item" href="https://solr.apache.org/docs/9_3_0/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a>
             <a class="navbar-item" href="https://solr.apache.org/community.html#version-control" target="_blank" rel="noreferrer nopener">Source Code</a>
             <a class="navbar-item" href="https://solr.apache.org/community.html" target="_blank" rel="noreferrer nopener">Community Links</a>
             <a class="navbar-item" href="https://github.com/apache/solr/tree/main/dev-docs/ref-guide" target="_blank" rel="noreferrer nopener">Contribute</a>
@@ -56,25 +56,25 @@
   </nav>
 </header>
 <div class="body">
-<div class="nav-container" data-component="solr" data-version="9_2">
+<div class="nav-container" data-component="solr" data-version="9_3">
   <aside class="nav">
     <div class="panels">
 <!-- Solr Changes - Start -->
 <div class="nav-panel-explore" data-panel="explore">
   <div class="context">
     <span class="title">Solr Reference Guide</span>
-    <span class="version">9.2</span>
+    <span class="version">9.3</span>
   </div>
 <!-- Programmatically creates the component and version list -->
   <ul class="components">
     <li class="component is-current">
       <a class="title" href="../index.html">Solr Reference Guide</a>
       <ul class="versions">
-        <li class="version">
-          <a href="../../9_3/index.html">9.3-beta</a>
-        </li>
         <li class="version is-current is-latest">
-          <a href="../index.html">9.2</a>
+          <a href="../index.html">9.3</a>
+        </li>
+        <li class="version">
+          <a href="../../9_2/index.html">9.2</a>
         </li>
         <li class="version">
           <a href="../../9_1/index.html">9.1</a>
@@ -211,7 +211,7 @@
     <a class="nav-link" href="../getting-started/tutorial-films.html">Exercise 2: Index Films Data</a>
   </li>
   <li class="nav-item" data-depth="2">
-    <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3 Index Your Own Data</a>
+    <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3: Index Your Own Data</a>
   </li>
   <li class="nav-item" data-depth="2">
     <a class="nav-link" href="../getting-started/tutorial-solrcloud.html">Getting Started with SolrCloud</a>
@@ -718,6 +718,9 @@
 </ul>
   </li>
   <li class="nav-item" data-depth="2">
+    <a class="nav-link" href="../indexing-guide/indexing-with-cbor.html">Indexing with Update CBOR data format</a>
+  </li>
+  <li class="nav-item" data-depth="2">
     <a class="nav-link" href="../indexing-guide/indexing-with-tika.html">Indexing with Solr Cell and Apache Tika</a>
   </li>
   <li class="nav-item" data-depth="2">
@@ -1071,17 +1074,17 @@
   </ul>
 </nav>
 <div class="page-versions">
-  <button class="version-menu-toggle" title="Show other versions of page">9.2</button>
+  <button class="version-menu-toggle" title="Show other versions of page">9.3</button>
   <div class="version-menu">
-    <a class="version" href="../../9_3/query-guide/loading.html">9.3-beta</a>
-    <a class="version is-current" href="loading.html">9.2</a>
+    <a class="version is-current" href="loading.html">9.3</a>
+    <a class="version" href="../../9_2/query-guide/loading.html">9.2</a>
     <a class="version" href="../../9_1/query-guide/loading.html">9.1</a>
     <a class="version" href="../../9_0/query-guide/loading.html">9.0</a>
   </div>
 </div>
 <!-- Solr Additions - Start -->
 <!-- Solr New File -->
-<span class="perma-link-copy" version="9_2">
+<span class="perma-link-copy" version="9_3">
 </span><!-- Solr Additions - End -->
   <div class="edit-this-page"><a href="https://github.com/apache/solr/tree/main/solr/solr-ref-guide/modules/query-guide/pages/loading.adoc">Edit this Page</a></div>
   </div>

Modified: sites/solr/guide/solr/latest/query-guide/local-params.html
URL: http://svn.apache.org/viewvc/sites/solr/guide/solr/latest/query-guide/local-params.html?rev=1083697&r1=1083696&r2=1083697&view=diff
==============================================================================
--- sites/solr/guide/solr/latest/query-guide/local-params.html (original)
+++ sites/solr/guide/solr/latest/query-guide/local-params.html Fri Jul 21 18:07:42 2023
@@ -39,7 +39,7 @@
         <div class="navbar-item has-dropdown is-hoverable">
           <a class="navbar-link" href="#">Resources</a>
           <div class="navbar-dropdown">
-            <a class="navbar-item" href="https://solr.apache.org/docs/9_2_1/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a>
+            <a class="navbar-item" href="https://solr.apache.org/docs/9_3_0/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a>
             <a class="navbar-item" href="https://solr.apache.org/community.html#version-control" target="_blank" rel="noreferrer nopener">Source Code</a>
             <a class="navbar-item" href="https://solr.apache.org/community.html" target="_blank" rel="noreferrer nopener">Community Links</a>
             <a class="navbar-item" href="https://github.com/apache/solr/tree/main/dev-docs/ref-guide" target="_blank" rel="noreferrer nopener">Contribute</a>
@@ -56,25 +56,25 @@
   </nav>
 </header>
 <div class="body">
-<div class="nav-container" data-component="solr" data-version="9_2">
+<div class="nav-container" data-component="solr" data-version="9_3">
   <aside class="nav">
     <div class="panels">
 <!-- Solr Changes - Start -->
 <div class="nav-panel-explore" data-panel="explore">
   <div class="context">
     <span class="title">Solr Reference Guide</span>
-    <span class="version">9.2</span>
+    <span class="version">9.3</span>
   </div>
 <!-- Programmatically creates the component and version list -->
   <ul class="components">
     <li class="component is-current">
       <a class="title" href="../index.html">Solr Reference Guide</a>
       <ul class="versions">
-        <li class="version">
-          <a href="../../9_3/index.html">9.3-beta</a>
-        </li>
         <li class="version is-current is-latest">
-          <a href="../index.html">9.2</a>
+          <a href="../index.html">9.3</a>
+        </li>
+        <li class="version">
+          <a href="../../9_2/index.html">9.2</a>
         </li>
         <li class="version">
           <a href="../../9_1/index.html">9.1</a>
@@ -211,7 +211,7 @@
     <a class="nav-link" href="../getting-started/tutorial-films.html">Exercise 2: Index Films Data</a>
   </li>
   <li class="nav-item" data-depth="2">
-    <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3 Index Your Own Data</a>
+    <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3: Index Your Own Data</a>
   </li>
   <li class="nav-item" data-depth="2">
     <a class="nav-link" href="../getting-started/tutorial-solrcloud.html">Getting Started with SolrCloud</a>
@@ -718,6 +718,9 @@
 </ul>
   </li>
   <li class="nav-item" data-depth="2">
+    <a class="nav-link" href="../indexing-guide/indexing-with-cbor.html">Indexing with Update CBOR data format</a>
+  </li>
+  <li class="nav-item" data-depth="2">
     <a class="nav-link" href="../indexing-guide/indexing-with-tika.html">Indexing with Solr Cell and Apache Tika</a>
   </li>
   <li class="nav-item" data-depth="2">
@@ -1070,17 +1073,17 @@
   </ul>
 </nav>
 <div class="page-versions">
-  <button class="version-menu-toggle" title="Show other versions of page">9.2</button>
+  <button class="version-menu-toggle" title="Show other versions of page">9.3</button>
   <div class="version-menu">
-    <a class="version" href="../../9_3/query-guide/local-params.html">9.3-beta</a>
-    <a class="version is-current" href="local-params.html">9.2</a>
+    <a class="version is-current" href="local-params.html">9.3</a>
+    <a class="version" href="../../9_2/query-guide/local-params.html">9.2</a>
     <a class="version" href="../../9_1/query-guide/local-params.html">9.1</a>
     <a class="version" href="../../9_0/query-guide/local-params.html">9.0</a>
   </div>
 </div>
 <!-- Solr Additions - Start -->
 <!-- Solr New File -->
-<span class="perma-link-copy" version="9_2">
+<span class="perma-link-copy" version="9_3">
 </span><!-- Solr Additions - End -->
   <div class="edit-this-page"><a href="https://github.com/apache/solr/tree/main/solr/solr-ref-guide/modules/query-guide/pages/local-params.adoc">Edit this Page</a></div>
   </div>

Modified: sites/solr/guide/solr/latest/query-guide/logs.html
URL: http://svn.apache.org/viewvc/sites/solr/guide/solr/latest/query-guide/logs.html?rev=1083697&r1=1083696&r2=1083697&view=diff
==============================================================================
--- sites/solr/guide/solr/latest/query-guide/logs.html (original)
+++ sites/solr/guide/solr/latest/query-guide/logs.html Fri Jul 21 18:07:42 2023
@@ -39,7 +39,7 @@
         <div class="navbar-item has-dropdown is-hoverable">
           <a class="navbar-link" href="#">Resources</a>
           <div class="navbar-dropdown">
-            <a class="navbar-item" href="https://solr.apache.org/docs/9_2_1/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a>
+            <a class="navbar-item" href="https://solr.apache.org/docs/9_3_0/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a>
             <a class="navbar-item" href="https://solr.apache.org/community.html#version-control" target="_blank" rel="noreferrer nopener">Source Code</a>
             <a class="navbar-item" href="https://solr.apache.org/community.html" target="_blank" rel="noreferrer nopener">Community Links</a>
             <a class="navbar-item" href="https://github.com/apache/solr/tree/main/dev-docs/ref-guide" target="_blank" rel="noreferrer nopener">Contribute</a>
@@ -56,25 +56,25 @@
   </nav>
 </header>
 <div class="body">
-<div class="nav-container" data-component="solr" data-version="9_2">
+<div class="nav-container" data-component="solr" data-version="9_3">
   <aside class="nav">
     <div class="panels">
 <!-- Solr Changes - Start -->
 <div class="nav-panel-explore" data-panel="explore">
   <div class="context">
     <span class="title">Solr Reference Guide</span>
-    <span class="version">9.2</span>
+    <span class="version">9.3</span>
   </div>
 <!-- Programmatically creates the component and version list -->
   <ul class="components">
     <li class="component is-current">
       <a class="title" href="../index.html">Solr Reference Guide</a>
       <ul class="versions">
-        <li class="version">
-          <a href="../../9_3/index.html">9.3-beta</a>
-        </li>
         <li class="version is-current is-latest">
-          <a href="../index.html">9.2</a>
+          <a href="../index.html">9.3</a>
+        </li>
+        <li class="version">
+          <a href="../../9_2/index.html">9.2</a>
         </li>
         <li class="version">
           <a href="../../9_1/index.html">9.1</a>
@@ -211,7 +211,7 @@
     <a class="nav-link" href="../getting-started/tutorial-films.html">Exercise 2: Index Films Data</a>
   </li>
   <li class="nav-item" data-depth="2">
-    <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3 Index Your Own Data</a>
+    <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3: Index Your Own Data</a>
   </li>
   <li class="nav-item" data-depth="2">
     <a class="nav-link" href="../getting-started/tutorial-solrcloud.html">Getting Started with SolrCloud</a>
@@ -718,6 +718,9 @@
 </ul>
   </li>
   <li class="nav-item" data-depth="2">
+    <a class="nav-link" href="../indexing-guide/indexing-with-cbor.html">Indexing with Update CBOR data format</a>
+  </li>
+  <li class="nav-item" data-depth="2">
     <a class="nav-link" href="../indexing-guide/indexing-with-tika.html">Indexing with Solr Cell and Apache Tika</a>
   </li>
   <li class="nav-item" data-depth="2">
@@ -1071,17 +1074,17 @@
   </ul>
 </nav>
 <div class="page-versions">
-  <button class="version-menu-toggle" title="Show other versions of page">9.2</button>
+  <button class="version-menu-toggle" title="Show other versions of page">9.3</button>
   <div class="version-menu">
-    <a class="version" href="../../9_3/query-guide/logs.html">9.3-beta</a>
-    <a class="version is-current" href="logs.html">9.2</a>
+    <a class="version is-current" href="logs.html">9.3</a>
+    <a class="version" href="../../9_2/query-guide/logs.html">9.2</a>
     <a class="version" href="../../9_1/query-guide/logs.html">9.1</a>
     <a class="version" href="../../9_0/query-guide/logs.html">9.0</a>
   </div>
 </div>
 <!-- Solr Additions - Start -->
 <!-- Solr New File -->
-<span class="perma-link-copy" version="9_2">
+<span class="perma-link-copy" version="9_3">
 </span><!-- Solr Additions - End -->
   <div class="edit-this-page"><a href="https://github.com/apache/solr/tree/main/solr/solr-ref-guide/modules/query-guide/pages/logs.adoc">Edit this Page</a></div>
   </div>

Modified: sites/solr/guide/solr/latest/query-guide/machine-learning.html
URL: http://svn.apache.org/viewvc/sites/solr/guide/solr/latest/query-guide/machine-learning.html?rev=1083697&r1=1083696&r2=1083697&view=diff
==============================================================================
--- sites/solr/guide/solr/latest/query-guide/machine-learning.html (original)
+++ sites/solr/guide/solr/latest/query-guide/machine-learning.html Fri Jul 21 18:07:42 2023
@@ -39,7 +39,7 @@
         <div class="navbar-item has-dropdown is-hoverable">
           <a class="navbar-link" href="#">Resources</a>
           <div class="navbar-dropdown">
-            <a class="navbar-item" href="https://solr.apache.org/docs/9_2_1/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a>
+            <a class="navbar-item" href="https://solr.apache.org/docs/9_3_0/index.html" target="_blank" rel="noreferrer nopener">Solr Javadocs</a>
             <a class="navbar-item" href="https://solr.apache.org/community.html#version-control" target="_blank" rel="noreferrer nopener">Source Code</a>
             <a class="navbar-item" href="https://solr.apache.org/community.html" target="_blank" rel="noreferrer nopener">Community Links</a>
             <a class="navbar-item" href="https://github.com/apache/solr/tree/main/dev-docs/ref-guide" target="_blank" rel="noreferrer nopener">Contribute</a>
@@ -56,25 +56,25 @@
   </nav>
 </header>
 <div class="body">
-<div class="nav-container" data-component="solr" data-version="9_2">
+<div class="nav-container" data-component="solr" data-version="9_3">
   <aside class="nav">
     <div class="panels">
 <!-- Solr Changes - Start -->
 <div class="nav-panel-explore" data-panel="explore">
   <div class="context">
     <span class="title">Solr Reference Guide</span>
-    <span class="version">9.2</span>
+    <span class="version">9.3</span>
   </div>
 <!-- Programmatically creates the component and version list -->
   <ul class="components">
     <li class="component is-current">
       <a class="title" href="../index.html">Solr Reference Guide</a>
       <ul class="versions">
-        <li class="version">
-          <a href="../../9_3/index.html">9.3-beta</a>
-        </li>
         <li class="version is-current is-latest">
-          <a href="../index.html">9.2</a>
+          <a href="../index.html">9.3</a>
+        </li>
+        <li class="version">
+          <a href="../../9_2/index.html">9.2</a>
         </li>
         <li class="version">
           <a href="../../9_1/index.html">9.1</a>
@@ -211,7 +211,7 @@
     <a class="nav-link" href="../getting-started/tutorial-films.html">Exercise 2: Index Films Data</a>
   </li>
   <li class="nav-item" data-depth="2">
-    <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3 Index Your Own Data</a>
+    <a class="nav-link" href="../getting-started/tutorial-diy.html">Exercise 3: Index Your Own Data</a>
   </li>
   <li class="nav-item" data-depth="2">
     <a class="nav-link" href="../getting-started/tutorial-solrcloud.html">Getting Started with SolrCloud</a>
@@ -718,6 +718,9 @@
 </ul>
   </li>
   <li class="nav-item" data-depth="2">
+    <a class="nav-link" href="../indexing-guide/indexing-with-cbor.html">Indexing with Update CBOR data format</a>
+  </li>
+  <li class="nav-item" data-depth="2">
     <a class="nav-link" href="../indexing-guide/indexing-with-tika.html">Indexing with Solr Cell and Apache Tika</a>
   </li>
   <li class="nav-item" data-depth="2">
@@ -1071,17 +1074,17 @@
   </ul>
 </nav>
 <div class="page-versions">
-  <button class="version-menu-toggle" title="Show other versions of page">9.2</button>
+  <button class="version-menu-toggle" title="Show other versions of page">9.3</button>
   <div class="version-menu">
-    <a class="version" href="../../9_3/query-guide/machine-learning.html">9.3-beta</a>
-    <a class="version is-current" href="machine-learning.html">9.2</a>
+    <a class="version is-current" href="machine-learning.html">9.3</a>
+    <a class="version" href="../../9_2/query-guide/machine-learning.html">9.2</a>
     <a class="version" href="../../9_1/query-guide/machine-learning.html">9.1</a>
     <a class="version" href="../../9_0/query-guide/machine-learning.html">9.0</a>
   </div>
 </div>
 <!-- Solr Additions - Start -->
 <!-- Solr New File -->
-<span class="perma-link-copy" version="9_2">
+<span class="perma-link-copy" version="9_3">
 </span><!-- Solr Additions - End -->
   <div class="edit-this-page"><a href="https://github.com/apache/solr/tree/main/solr/solr-ref-guide/modules/query-guide/pages/machine-learning.adoc">Edit this Page</a></div>
   </div>