| <!DOCTYPE html> |
| <!--[if IE]><![endif]--> |
| <html> |
| |
| <head> |
| <meta charset="utf-8"> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| <title>Namespace Lucene.Net.Index.Sorter |
| | Apache Lucene.NET 4.8.0-beta00011 Documentation </title> |
| <meta name="viewport" content="width=device-width"> |
| <meta name="title" content="Namespace Lucene.Net.Index.Sorter |
| | Apache Lucene.NET 4.8.0-beta00011 Documentation "> |
| <meta name="generator" content="docfx 2.56.0.0"> |
| |
| <link rel="shortcut icon" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/favicon.ico"> |
| <link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.css"> |
| <link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.css"> |
| <link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.css"> |
| <meta property="docfx:navrel" content="toc.html"> |
| <meta property="docfx:tocrel" content="misc/toc.html"> |
| |
| <meta property="docfx:rel" content="https://lucenenet.apache.org/docs/4.8.0-beta00009/"> |
| |
| </head> |
| <body data-spy="scroll" data-target="#affix" data-offset="120"> |
| <div id="wrapper"> |
| <header> |
| |
| <nav id="autocollapse" class="navbar ng-scope" role="navigation"> |
| <div class="container"> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| |
| <a class="navbar-brand" href="/"> |
| <img id="logo" class="svg" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/lucene-net-color.png" alt=""> |
| </a> |
| </div> |
| <div class="collapse navbar-collapse" id="navbar"> |
| <form class="navbar-form navbar-right" role="search" id="search"> |
| <div class="form-group"> |
| <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off"> |
| </div> |
| </form> |
| </div> |
| </div> |
| </nav> |
| |
| <div class="subnav navbar navbar-default"> |
| <div class="container hide-when-search"> |
| <ul class="level0 breadcrumb"> |
| <li> |
| <a href="https://lucenenet.apache.org/docs/4.8.0-beta00009/">API</a> |
| <span id="breadcrumb"> |
| <ul class="breadcrumb"> |
| <li></li> |
| </ul> |
| </span> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </header> |
| <div class="container body-content"> |
| |
| <div id="search-results"> |
| <div class="search-list"></div> |
| <div class="sr-items"> |
| <p><i class="glyphicon glyphicon-refresh index-loading"></i></p> |
| </div> |
| <ul id="pagination"></ul> |
| </div> |
| </div> |
| <div role="main" class="container body-content hide-when-search"> |
| |
| <div class="sidenav hide-when-search"> |
| <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a> |
| <div class="sidetoggle collapse" id="sidetoggle"> |
| <div id="sidetoc"></div> |
| </div> |
| </div> |
| <div class="article row grid-right"> |
| <div class="col-md-10"> |
| <article class="content wrap" id="_content" data-uid="Lucene.Net.Index.Sorter"> |
| |
| <h1 id="Lucene_Net_Index_Sorter" data-uid="Lucene.Net.Index.Sorter" class="text-break">Namespace Lucene.Net.Index.Sorter |
| </h1> |
| <div class="markdown level0 summary"><!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <p>Provides index sorting capablities. The application can use any |
| Sort specification, e.g. to sort by fields using DocValues or FieldCache, or to |
| reverse the order of the documents (by using SortField.Type.DOC in reverse). |
| Multi-level sorts can be specified the same way you would when searching, by |
| building Sort from multiple SortFields.</p> |
| <p><a class="xref" href="Lucene.Net.Index.Sorter.SortingMergePolicy.html">SortingMergePolicy</a> can be used to |
| make Lucene sort segments before merging them. This will ensure that every |
| segment resulting from a merge will be sorted according to the provided |
| <xref:Lucene.Net.Search.Sort>. This however makes merging and |
| thus indexing slower.</p> |
| <p>Sorted segments allow for early query termination when the sort order |
| matches index order. This makes query execution faster since not all documents |
| need to be visited. Please note that this is an expert feature and should not |
| be used without a deep understanding of Lucene merging and document collection.</p> |
| </div> |
| <div class="markdown level0 conceptual"></div> |
| <div class="markdown level0 remarks"></div> |
| <h3 id="classes">Classes |
| </h3> |
| <h4><a class="xref" href="Lucene.Net.Index.Sorter.BlockJoinComparerSource.html">BlockJoinComparerSource</a></h4> |
| <section><p>Helper class to sort readers that contain blocks of documents. |
| <p> |
| Note that this class is intended to used with <a class="xref" href="Lucene.Net.Index.Sorter.SortingMergePolicy.html">SortingMergePolicy</a>, |
| and for other purposes has some limitations: |
| <ul><li>Cannot yet be used with <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.IndexSearcher.html#Lucene_Net_Search_IndexSearcher_SearchAfter_Lucene_Net_Search_ScoreDoc_Lucene_Net_Search_Query_Lucene_Net_Search_Filter_System_Int32_Lucene_Net_Search_Sort_">SearchAfter(ScoreDoc, Query, Filter, Int32, Sort)</a></li><li>Filling sort field values is not yet supported.</li></ul></p> |
| <div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div><p> |
| </section> |
| <h4><a class="xref" href="Lucene.Net.Index.Sorter.EarlyTerminatingSortingCollector.html">EarlyTerminatingSortingCollector</a></h4> |
| <section><p>A <span class="xref">Lucene.Net.Search.ICollector</span> that early terminates collection of documents on a |
| per-segment basis, if the segment was sorted according to the given |
| <span class="xref">Lucene.Net.Search.Sort</span>.</p> |
| <p> |
| <strong>NOTE:</strong> the <span class="xref">Lucene.Net.Search.ICollector</span> detects sorted segments according to |
| <a class="xref" href="Lucene.Net.Index.Sorter.SortingMergePolicy.html">SortingMergePolicy</a>, so it's best used in conjunction with it. Also, |
| it collects up to a specified <a class="xref" href="Lucene.Net.Index.Sorter.EarlyTerminatingSortingCollector.html#Lucene_Net_Index_Sorter_EarlyTerminatingSortingCollector_m_numDocsToCollect">m_numDocsToCollect</a> from each segment, |
| and therefore is mostly suitable for use in conjunction with collectors such as |
| <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.TopDocsCollector-1.html">TopDocsCollector<T></a>, and not e.g. <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.TotalHitCountCollector.html">TotalHitCountCollector</a>. |
| </p> |
| <p> |
| <strong>NOTE</strong>: If you wrap a <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.TopDocsCollector-1.html">TopDocsCollector<T></a> that sorts in the same |
| order as the index order, the returned <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.TopDocsCollector-1.html#Lucene_Net_Search_TopDocsCollector_1_GetTopDocs">GetTopDocs()</a> |
| will be correct. However the total of <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.TopDocsCollector-1.html#Lucene_Net_Search_TopDocsCollector_1_TotalHits">TotalHits</a> |
| hit count will be underestimated since not all matching documents will have |
| been collected. |
| </p> |
| <p> |
| <strong>NOTE</strong>: This <span class="xref">Lucene.Net.Search.ICollector</span> uses <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.Sort.html#Lucene_Net_Search_Sort_ToString">ToString()</a> to detect |
| whether a segment was sorted with the same <span class="xref">Lucene.Net.Search.Sort</span>. This has |
| two implications: |
| <ul> |
| <li>if a custom comparer is not implemented correctly and returns |
| different identifiers for equivalent instances, this collector will not |
| detect sorted segments,</li> |
| <li>if you suddenly change the <span class="xref">Lucene.Net.Index.IndexWriter</span>'s |
| <a class="xref" href="Lucene.Net.Index.Sorter.SortingMergePolicy.html">SortingMergePolicy</a> to sort according to another criterion and if both |
| the old and the new <span class="xref">Lucene.Net.Search.Sort</span>s have the same identifier, this |
| <span class="xref">Lucene.Net.Search.ICollector</span> will incorrectly detect sorted segments.</li> |
| </ul> |
| |
| @lucene.experimental |
| </p> |
| </section> |
| <h4><a class="xref" href="Lucene.Net.Index.Sorter.SortingAtomicReader.html">SortingAtomicReader</a></h4> |
| <section><p>An <span class="xref">Lucene.Net.Index.AtomicReader</span> which supports sorting documents by a given |
| <span class="xref">Lucene.Net.Search.Sort</span>. You can use this class to sort an index as follows:</p> |
| <pre><code>IndexWriter writer; // writer to which the sorted index will be added |
| DirectoryReader reader; // reader on the input index |
| Sort sort; // determines how the documents are sorted |
| AtomicReader sortingReader = SortingAtomicReader.Wrap(SlowCompositeReaderWrapper.Wrap(reader), sort); |
| writer.AddIndexes(reader); |
| reader.Dispose(); // alternatively, you can use a using block |
| writer.Dispose(); // alternatively, you can use a using block</code></pre> |
| |
| <div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div></section> |
| <h4><a class="xref" href="Lucene.Net.Index.Sorter.SortingMergePolicy.html">SortingMergePolicy</a></h4> |
| <section><p>A <span class="xref">Lucene.Net.Index.MergePolicy</span> that reorders documents according to a <span class="xref">Lucene.Net.Search.Sort</span> |
| before merging them. As a consequence, all segments resulting from a merge |
| will be sorted while segments resulting from a flush will be in the order |
| in which documents have been added. |
| <p><strong>NOTE</strong>: Never use this policy if you rely on |
| <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Index.IndexWriter.html#Lucene_Net_Index_IndexWriter_AddDocuments_System_Collections_Generic_IEnumerable_System_Collections_Generic_IEnumerable_Lucene_Net_Index_IIndexableField___Lucene_Net_Analysis_Analyzer_">AddDocuments(IEnumerable<IEnumerable<IIndexableField>>, Analyzer)</a> |
| to have sequentially-assigned doc IDs, this policy will scatter doc IDs. |
| </p> |
| <p><strong>NOTE</strong>: This policy should only be used with idempotent <span class="xref">Lucene.Net.Search.Sort</span>s |
| so that the order of segments is predictable. For example, using |
| <a class="xref" href="http://localhost:8080/api/core/Lucene.Net.Search.Sort.html#Lucene_Net_Search_Sort_INDEXORDER">INDEXORDER</a> in reverse (which is not idempotent) will make |
| the order of documents in a segment depend on the number of times the segment |
| has been merged.</p> |
| <div class="lucene-block lucene-experimental">This is a Lucene.NET EXPERIMENTAL API, use at your own risk</div><p> |
| </p></p> |
| </section> |
| </article> |
| </div> |
| |
| <div class="hidden-sm col-md-2" role="complementary"> |
| <div class="sideaffix"> |
| <div class="contribution"> |
| <ul class="nav"> |
| <li> |
| <a href="https://github.com/apache/lucenenet/blob/docs/4.8.0-beta00011/src/Lucene.Net.Misc/Index/Sorter/package.md/#L2" class="contribution-link">Improve this Doc</a> |
| </li> |
| </ul> |
| </div> |
| <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix"> |
| <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> --> |
| </nav> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <footer> |
| <div class="grad-bottom"></div> |
| <div class="footer"> |
| <div class="container"> |
| <span class="pull-right"> |
| <a href="#top">Back to top</a> |
| </span> |
| Copyright © 2020 Licensed to the Apache Software Foundation (ASF) |
| |
| </div> |
| </div> |
| </footer> |
| </div> |
| |
| <script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.js"></script> |
| <script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.js"></script> |
| <script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.js"></script> |
| </body> |
| </html> |