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"><lib dir="${solr.install.dir:../../../..}/modules/ltr/lib/" regex=".*\.jar" /></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"><queryParser name="ltr" class="org.apache.solr.ltr.search.LTRQParserPlugin"/></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"><cache name="QUERY_DOC_FV" + class="solr.search.CaffeineCache" + size="4096" + initialSize="2048" + autowarmCount="4096" + regenerator="solr.search.NoOpRegenerator" /></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"><transformer name="features" class="org.apache.solr.ltr.response.transform.LTRFeatureLoggerTransformerFactory"> + <str name="fvCacheName">QUERY_DOC_FV</str> +</transformer></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"><transformer name="interleaving" class="org.apache.solr.ltr.response.transform.LTRInterleavingTransformerFactory"/></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&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&rq={!ltr model=currentModel reRankDocs=100}&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’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’s resource paths with a <a href="../configuration-guide/libs.html#lib-directives-in-solrconfig" class="xref page"><code><lib/></code> directive</a>:</p> +</div> +<div class="listingblock"> +<div class="content"> +<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"> <lib dir="/path/to" regex="models" /></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><lib dir="/path/to/models" regex=".*\.json" /></code> doesn’t work as expected in this case, because <code>SolrResourceLoader</code> considers given resources as JAR if <code><lib /></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’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><str name="defaultFormat">sparse</str></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"><transformer name="features" class="org.apache.solr.ltr.response.transform.LTRFeatureLoggerTransformerFactory"> + <str name="fvCacheName">QUERY_DOC_FV</str> + <str name="defaultFormat">sparse</str> + <str name="csvKeyValueDelimiter">:</str> + <str name="csvFeatureSeparator"> </str> +</transformer></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"><lib dir="${solr.install.dir:../../../..}/modules/ltr/lib/" regex=".*\.jar" /></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"><queryParser name="ltr" class="org.apache.solr.ltr.search.LTRQParserPlugin"/></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"><cache name="QUERY_DOC_FV" - class="solr.search.CaffeineCache" - size="4096" - initialSize="2048" - autowarmCount="4096" - regenerator="solr.search.NoOpRegenerator" /></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"><transformer name="features" class="org.apache.solr.ltr.response.transform.LTRFeatureLoggerTransformerFactory"> - <str name="fvCacheName">QUERY_DOC_FV</str> -</transformer></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"><transformer name="interleaving" class="org.apache.solr.ltr.response.transform.LTRInterleavingTransformerFactory"/></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"><transformer name="features" class="org.apache.solr.ltr.response.transform.LTRFeatureLoggerTransformerFactory"> - <str name="fvCacheName">QUERY_DOC_FV</str> - <str name="defaultFormat">sparse</str> - <str name="csvKeyValueDelimiter">:</str> - <str name="csvFeatureSeparator"> </str> -</transformer></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&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&rq={!ltr model=currentModel reRankDocs=100}&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’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’s resource paths with a <a href="../configuration-guide/libs.html#lib-directives-in-solrconfig" class="xref page"><code><lib/></code> directive</a>:</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre class="highlightjs highlight"><code class="language-xml hljs" data-lang="xml"> <lib dir="/path/to" regex="models" /></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><lib dir="/path/to/models" regex=".*\.json" /></code> doesn’t work as expected in this case, because <code>SolrResourceLoader</code> considers given resources as JAR if <code><lib /></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’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&rq={!ltr model=linearModel reRankDocs=100}&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&rq={!ltr model=linearModel reRankDocs=100}&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&rq={!ltr model=linearModel reRankDocs=100}&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&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&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>
