Automatic Travis documentation build

This commit is contained in:
Travis CI User
2018-02-20 04:07:37 +00:00
parent 0ec6a645d1
commit ae8247e83d
40 changed files with 1165 additions and 616 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,10 @@
(function() {var implementors = {};
implementors["tantivy"] = [];
if (window.register_implementors) {
window.register_implementors(implementors);
} else {
window.pending_implementors = implementors;
}
})()

File diff suppressed because one or more lines are too long

View File

@@ -247,7 +247,6 @@
<span id="191">191</span>
<span id="192">192</span>
<span id="193">193</span>
<span id="194">194</span>
</pre><pre class="rust ">
<span class="doccomment">/*!
Defines how the documents matching a search query should be processed.
@@ -345,7 +344,6 @@ Defines how the documents matching a search query should be processed.
<span class="kw">use</span> <span class="ident">Score</span>;
<span class="kw">use</span> <span class="ident">core</span>::<span class="ident">SegmentReader</span>;
<span class="kw">use</span> <span class="ident">SegmentLocalId</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">U64FastFieldReader</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">FastFieldReader</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Field</span>;
@@ -399,7 +397,7 @@ Defines how the documents matching a search query should be processed.
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">FastFieldTestCollector</span> {
<span class="ident">vals</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>,
<span class="ident">field</span>: <span class="ident">Field</span>,
<span class="ident">ff_reader</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">U64FastFieldReader</span><span class="op">&gt;</span>,
<span class="ident">ff_reader</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;&gt;</span>,
}
<span class="kw">impl</span> <span class="ident">FastFieldTestCollector</span> {
@@ -418,7 +416,7 @@ Defines how the documents matching a search query should be processed.
<span class="kw">impl</span> <span class="ident">Collector</span> <span class="kw">for</span> <span class="ident">FastFieldTestCollector</span> {
<span class="kw">fn</span> <span class="ident">set_segment</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, _: <span class="ident">SegmentLocalId</span>, <span class="ident">reader</span>: <span class="kw-2">&amp;</span><span class="ident">SegmentReader</span>) <span class="op">-&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="self">self</span>.<span class="ident">ff_reader</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">reader</span>.<span class="ident">get_fast_field_reader</span>(<span class="self">self</span>.<span class="ident">field</span>)<span class="question-mark">?</span>);
<span class="self">self</span>.<span class="ident">ff_reader</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">reader</span>.<span class="ident">fast_field_reader</span>(<span class="self">self</span>.<span class="ident">field</span>)<span class="question-mark">?</span>);
<span class="prelude-val">Ok</span>(())
}

View File

@@ -250,6 +250,10 @@
<span id="194">194</span>
<span id="195">195</span>
<span id="196">196</span>
<span id="197">197</span>
<span id="198">198</span>
<span id="199">199</span>
<span id="200">200</span>
</pre><pre class="rust ">
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">io</span>::<span class="ident">Write</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">io</span>;
@@ -342,7 +346,7 @@
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">idx</span>: <span class="ident">usize</span>) <span class="op">-&gt;</span> <span class="ident">u64</span> {
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">num_bits</span> <span class="op">==</span> <span class="number">0</span> {
<span class="kw">return</span> <span class="number">0</span>;
<span class="kw">return</span> <span class="number">0u64</span>;
}
<span class="kw">let</span> <span class="ident">data</span>: <span class="kw-2">&amp;</span>[<span class="ident">u8</span>] <span class="op">=</span> <span class="kw-2">&amp;</span><span class="kw-2">*</span><span class="self">self</span>.<span class="ident">data</span>;
<span class="kw">let</span> <span class="ident">num_bits</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">num_bits</span>;
@@ -360,7 +364,7 @@
);
<span class="kw">let</span> <span class="ident">val_unshifted_unmasked</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="kw">unsafe</span> { <span class="kw-2">*</span>(<span class="ident">data</span>[<span class="ident">addr</span>..].<span class="ident">as_ptr</span>() <span class="kw">as</span> <span class="kw-2">*</span><span class="kw">const</span> <span class="ident">u64</span>) };
<span class="kw">let</span> <span class="ident">val_shifted</span> <span class="op">=</span> (<span class="ident">val_unshifted_unmasked</span> <span class="op">&gt;&gt;</span> <span class="ident">bit_shift</span>) <span class="kw">as</span> <span class="ident">u64</span>;
(<span class="ident">val_shifted</span> <span class="op">&amp;</span> <span class="ident">mask</span>)
<span class="ident">val_shifted</span> <span class="op">&amp;</span> <span class="ident">mask</span>
} <span class="kw">else</span> {
<span class="kw">let</span> <span class="ident">val_unshifted_unmasked</span>: <span class="ident">u64</span> <span class="op">=</span> <span class="kw">if</span> <span class="ident">addr</span> <span class="op">+</span> <span class="number">8</span> <span class="op">&lt;=</span> <span class="ident">data</span>.<span class="ident">len</span>() {
<span class="kw">unsafe</span> { <span class="kw-2">*</span>(<span class="ident">data</span>[<span class="ident">addr</span>..].<span class="ident">as_ptr</span>() <span class="kw">as</span> <span class="kw-2">*</span><span class="kw">const</span> <span class="ident">u64</span>) }
@@ -372,14 +376,18 @@
<span class="kw">unsafe</span> { <span class="kw-2">*</span>(<span class="ident">buffer</span>[..].<span class="ident">as_ptr</span>() <span class="kw">as</span> <span class="kw-2">*</span><span class="kw">const</span> <span class="ident">u64</span>) }
};
<span class="kw">let</span> <span class="ident">val_shifted</span> <span class="op">=</span> <span class="ident">val_unshifted_unmasked</span> <span class="op">&gt;&gt;</span> (<span class="ident">bit_shift</span> <span class="kw">as</span> <span class="ident">u64</span>);
(<span class="ident">val_shifted</span> <span class="op">&amp;</span> <span class="ident">mask</span>)
<span class="ident">val_shifted</span> <span class="op">&amp;</span> <span class="ident">mask</span>
}
}
<span class="doccomment">/// Reads a range of values from the fast field.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// The range of values read is from</span>
<span class="doccomment">/// `[start..start + output.len()[`</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_range</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">start</span>: <span class="ident">u32</span>, <span class="ident">output</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> [<span class="ident">u64</span>]) {
<span class="kw">if</span> <span class="self">self</span>.<span class="ident">num_bits</span> <span class="op">==</span> <span class="number">0</span> {
<span class="kw">for</span> <span class="ident">val</span> <span class="kw">in</span> <span class="ident">output</span>.<span class="ident">iter_mut</span>() {
<span class="kw-2">*</span><span class="ident">val</span> <span class="op">=</span> <span class="number">0</span>;
<span class="kw-2">*</span><span class="ident">val</span> <span class="op">=</span> <span class="number">0u64</span>;
}
} <span class="kw">else</span> {
<span class="kw">let</span> <span class="ident">data</span>: <span class="kw-2">&amp;</span>[<span class="ident">u8</span>] <span class="op">=</span> <span class="kw-2">&amp;</span><span class="kw-2">*</span><span class="self">self</span>.<span class="ident">data</span>;

View File

@@ -348,6 +348,12 @@
<span id="292">292</span>
<span id="293">293</span>
<span id="294">294</span>
<span id="295">295</span>
<span id="296">296</span>
<span id="297">297</span>
<span id="298">298</span>
<span id="299">299</span>
<span id="300">300</span>
</pre><pre class="rust ">
<span class="kw">use</span> <span class="prelude-ty">Result</span>;
<span class="kw">use</span> <span class="ident">core</span>::<span class="ident">Segment</span>;
@@ -372,10 +378,11 @@
<span class="kw">use</span> <span class="ident">error</span>::<span class="ident">ErrorKind</span>;
<span class="kw">use</span> <span class="ident">termdict</span>::<span class="ident">TermDictionaryImpl</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">FacetReader</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::{<span class="ident">FastFieldReader</span>, <span class="ident">U64FastFieldReader</span>};
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">FastFieldReader</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Schema</span>;
<span class="kw">use</span> <span class="ident">termdict</span>::<span class="ident">TermDictionary</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">MultiValueIntFastFieldReader</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::{<span class="ident">FastValue</span>, <span class="ident">MultiValueIntFastFieldReader</span>};
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Cardinality</span>;
<span class="doccomment">/// Entry point to access all of the datastructures of the `Segment`</span>
<span class="doccomment">///</span>
@@ -442,18 +449,37 @@
<span class="doccomment">///</span>
<span class="doccomment">/// # Panics</span>
<span class="doccomment">/// May panic if the index is corrupted.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_fast_field_reader</span><span class="op">&lt;</span><span class="ident">TFastFieldReader</span>: <span class="ident">FastFieldReader</span><span class="op">&gt;</span>(
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">fast_field_reader</span><span class="op">&lt;</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">&gt;</span>(
<span class="kw-2">&amp;</span><span class="self">self</span>,
<span class="ident">field</span>: <span class="ident">Field</span>,
) <span class="op">-&gt;</span> <span class="ident">fastfield</span>::<span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">TFastFieldReader</span><span class="op">&gt;</span> {
) <span class="op">-&gt;</span> <span class="ident">fastfield</span>::<span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;&gt;</span> {
<span class="kw">let</span> <span class="ident">field_entry</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">schema</span>.<span class="ident">get_field_entry</span>(<span class="ident">field</span>);
<span class="kw">if</span> <span class="op">!</span><span class="ident">TFastFieldReader</span>::<span class="ident">is_enabled</span>(<span class="ident">field_entry</span>.<span class="ident">field_type</span>()) {
<span class="prelude-val">Err</span>(<span class="ident">FastFieldNotAvailableError</span>::<span class="ident">new</span>(<span class="ident">field_entry</span>))
} <span class="kw">else</span> {
<span class="kw">if</span> <span class="ident">Item</span>::<span class="ident">fast_field_cardinality</span>(<span class="ident">field_entry</span>.<span class="ident">field_type</span>()) <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Cardinality</span>::<span class="ident">SingleValue</span>) {
<span class="self">self</span>.<span class="ident">fast_fields_composite</span>
.<span class="ident">open_read</span>(<span class="ident">field</span>)
.<span class="ident">ok_or_else</span>(<span class="op">||</span> <span class="ident">FastFieldNotAvailableError</span>::<span class="ident">new</span>(<span class="ident">field_entry</span>))
.<span class="ident">map</span>(<span class="ident">TFastFieldReader</span>::<span class="ident">open</span>)
.<span class="ident">map</span>(<span class="ident">FastFieldReader</span>::<span class="ident">open</span>)
} <span class="kw">else</span> {
<span class="prelude-val">Err</span>(<span class="ident">FastFieldNotAvailableError</span>::<span class="ident">new</span>(<span class="ident">field_entry</span>))
}
}
<span class="doccomment">/// Accessor to the `MultiValueIntFastFieldReader` associated to a given `Field`.</span>
<span class="doccomment">/// May panick if the field is not a multivalued fastfield of the type `Item`.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">multi_fast_field_reader</span><span class="op">&lt;</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">&gt;</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">field</span>: <span class="ident">Field</span>) <span class="op">-&gt;</span> <span class="ident">fastfield</span>::<span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">MultiValueIntFastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;&gt;</span> {
<span class="kw">let</span> <span class="ident">field_entry</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">schema</span>.<span class="ident">get_field_entry</span>(<span class="ident">field</span>);
<span class="kw">if</span> <span class="ident">Item</span>::<span class="ident">fast_field_cardinality</span>(<span class="ident">field_entry</span>.<span class="ident">field_type</span>()) <span class="op">==</span> <span class="prelude-val">Some</span>(<span class="ident">Cardinality</span>::<span class="ident">MultiValues</span>) {
<span class="kw">let</span> <span class="ident">idx_reader</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">fast_fields_composite</span>
.<span class="ident">open_read_with_idx</span>(<span class="ident">field</span>, <span class="number">0</span>)
.<span class="ident">ok_or_else</span>(<span class="op">||</span> <span class="ident">FastFieldNotAvailableError</span>::<span class="ident">new</span>(<span class="ident">field_entry</span>))
.<span class="ident">map</span>(<span class="ident">FastFieldReader</span>::<span class="ident">open</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">vals_reader</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">fast_fields_composite</span>
.<span class="ident">open_read_with_idx</span>(<span class="ident">field</span>, <span class="number">1</span>)
.<span class="ident">ok_or_else</span>(<span class="op">||</span> <span class="ident">FastFieldNotAvailableError</span>::<span class="ident">new</span>(<span class="ident">field_entry</span>))
.<span class="ident">map</span>(<span class="ident">FastFieldReader</span>::<span class="ident">open</span>)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="ident">MultiValueIntFastFieldReader</span>::<span class="ident">open</span>(<span class="ident">idx_reader</span>, <span class="ident">vals_reader</span>))
} <span class="kw">else</span> {
<span class="prelude-val">Err</span>(<span class="ident">FastFieldNotAvailableError</span>::<span class="ident">new</span>(<span class="ident">field_entry</span>))
}
}
@@ -467,7 +493,7 @@
<span class="ident">field_entry</span>
)).<span class="ident">into</span>());
}
<span class="kw">let</span> <span class="ident">term_ords_reader</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">multi_value_reader</span>(<span class="ident">field</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">term_ords_reader</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">multi_fast_field_reader</span>(<span class="ident">field</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">termdict_source</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">termdict_composite</span>.<span class="ident">open_read</span>(<span class="ident">field</span>).<span class="ident">ok_or_else</span>(<span class="op">||</span> {
<span class="ident">ErrorKind</span>::<span class="ident">InvalidArgument</span>(<span class="macro">format</span><span class="macro">!</span>(
<span class="string">&quot;The field \&quot;{}\&quot; is a hierarchical \
@@ -481,20 +507,6 @@
<span class="prelude-val">Ok</span>(<span class="ident">facet_reader</span>)
}
<span class="doccomment">/// Accessor to the `MultiValueIntFastFieldReader` associated to a given `Field`.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">multi_value_reader</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">field</span>: <span class="ident">Field</span>) <span class="op">-&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">MultiValueIntFastFieldReader</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="ident">field_entry</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">schema</span>.<span class="ident">get_field_entry</span>(<span class="ident">field</span>);
<span class="kw">let</span> <span class="ident">idx_reader</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">fast_fields_composite</span>
.<span class="ident">open_read_with_idx</span>(<span class="ident">field</span>, <span class="number">0</span>)
.<span class="ident">ok_or_else</span>(<span class="op">||</span> <span class="ident">FastFieldNotAvailableError</span>::<span class="ident">new</span>(<span class="ident">field_entry</span>))
.<span class="ident">map</span>(<span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">vals_reader</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">fast_fields_composite</span>
.<span class="ident">open_read_with_idx</span>(<span class="ident">field</span>, <span class="number">1</span>)
.<span class="ident">ok_or_else</span>(<span class="op">||</span> <span class="ident">FastFieldNotAvailableError</span>::<span class="ident">new</span>(<span class="ident">field_entry</span>))
.<span class="ident">map</span>(<span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="ident">MultiValueIntFastFieldReader</span>::<span class="ident">open</span>(<span class="ident">idx_reader</span>, <span class="ident">vals_reader</span>))
}
<span class="doccomment">/// Accessor to the segment&#39;s `Field norms`&#39;s reader.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// Field norms are the length (in tokens) of the fields.</span>
@@ -503,10 +515,10 @@
<span class="doccomment">///</span>
<span class="doccomment">/// They are simply stored as a fast field, serialized in</span>
<span class="doccomment">/// the `.fieldnorm` file of the segment.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_fieldnorms_reader</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">field</span>: <span class="ident">Field</span>) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">U64FastFieldReader</span><span class="op">&gt;</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_fieldnorms_reader</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">field</span>: <span class="ident">Field</span>) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;&gt;</span> {
<span class="self">self</span>.<span class="ident">fieldnorms_composite</span>
.<span class="ident">open_read</span>(<span class="ident">field</span>)
.<span class="ident">map</span>(<span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>)
.<span class="ident">map</span>(<span class="ident">FastFieldReader</span>::<span class="ident">open</span>)
}
<span class="doccomment">/// Accessor to the segment&#39;s `StoreReader`.</span>

View File

@@ -553,11 +553,11 @@
<span class="kw">let</span> (<span class="ident">addr</span>, <span class="ident">val</span>): (<span class="ident">u32</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">V</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">heap</span>.<span class="ident">allocate_object</span>();
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">addr</span>, <span class="ident">key_bytes_ref</span>.<span class="ident">addr</span>() <span class="op">+</span> <span class="number">2</span> <span class="op">+</span> <span class="ident">key_bytes</span>.<span class="ident">len</span>() <span class="kw">as</span> <span class="ident">u32</span>);
<span class="self">self</span>.<span class="ident">set_bucket</span>(<span class="ident">hash</span>, <span class="ident">key_bytes_ref</span>, <span class="ident">bucket</span>);
<span class="kw">return</span> (<span class="ident">bucket</span>, <span class="ident">val</span>);
<span class="kw">return</span> (<span class="ident">bucket</span> <span class="kw">as</span> <span class="ident">UnorderedTermId</span>, <span class="ident">val</span>);
} <span class="kw">else</span> <span class="kw">if</span> <span class="ident">kv</span>.<span class="ident">hash</span> <span class="op">==</span> <span class="ident">hash</span> {
<span class="kw">let</span> (<span class="ident">stored_key</span>, <span class="ident">expull_addr</span>): (<span class="kw-2">&amp;</span>[<span class="ident">u8</span>], <span class="ident">u32</span>) <span class="op">=</span> <span class="self">self</span>.<span class="ident">get_key_value</span>(<span class="ident">kv</span>.<span class="ident">key_value_addr</span>);
<span class="kw">if</span> <span class="ident">stored_key</span> <span class="op">==</span> <span class="ident">key_bytes</span> {
<span class="kw">return</span> (<span class="ident">bucket</span>, <span class="self">self</span>.<span class="ident">heap</span>.<span class="ident">get_mut_ref</span>(<span class="ident">expull_addr</span>));
<span class="kw">return</span> (<span class="ident">bucket</span> <span class="kw">as</span> <span class="ident">UnorderedTermId</span>, <span class="self">self</span>.<span class="ident">heap</span>.<span class="ident">get_mut_ref</span>(<span class="ident">expull_addr</span>));
}
}
}

View File

@@ -143,7 +143,7 @@
<span class="doccomment">/// list of facets. This ordinal is segment local and</span>
<span class="doccomment">/// only makes sense for a given segment.</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">FacetReader</span> {
<span class="ident">term_ords</span>: <span class="ident">MultiValueIntFastFieldReader</span>,
<span class="ident">term_ords</span>: <span class="ident">MultiValueIntFastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>,
<span class="ident">term_dict</span>: <span class="ident">TermDictionaryImpl</span>,
}
@@ -156,12 +156,12 @@
<span class="doccomment">/// - a `TermDictionaryImpl` that helps associating a facet to</span>
<span class="doccomment">/// an ordinal and vice versa.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(
<span class="ident">term_ords</span>: <span class="ident">MultiValueIntFastFieldReader</span>,
<span class="ident">term_ords</span>: <span class="ident">MultiValueIntFastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>,
<span class="ident">term_dict</span>: <span class="ident">TermDictionaryImpl</span>,
) <span class="op">-&gt;</span> <span class="ident">FacetReader</span> {
<span class="ident">FacetReader</span> {
<span class="ident">term_ords</span>: <span class="ident">term_ords</span>,
<span class="ident">term_dict</span>: <span class="ident">term_dict</span>,
<span class="ident">term_ords</span>,
<span class="ident">term_dict</span>
}
}

View File

@@ -492,6 +492,79 @@
<span id="436">436</span>
<span id="437">437</span>
<span id="438">438</span>
<span id="439">439</span>
<span id="440">440</span>
<span id="441">441</span>
<span id="442">442</span>
<span id="443">443</span>
<span id="444">444</span>
<span id="445">445</span>
<span id="446">446</span>
<span id="447">447</span>
<span id="448">448</span>
<span id="449">449</span>
<span id="450">450</span>
<span id="451">451</span>
<span id="452">452</span>
<span id="453">453</span>
<span id="454">454</span>
<span id="455">455</span>
<span id="456">456</span>
<span id="457">457</span>
<span id="458">458</span>
<span id="459">459</span>
<span id="460">460</span>
<span id="461">461</span>
<span id="462">462</span>
<span id="463">463</span>
<span id="464">464</span>
<span id="465">465</span>
<span id="466">466</span>
<span id="467">467</span>
<span id="468">468</span>
<span id="469">469</span>
<span id="470">470</span>
<span id="471">471</span>
<span id="472">472</span>
<span id="473">473</span>
<span id="474">474</span>
<span id="475">475</span>
<span id="476">476</span>
<span id="477">477</span>
<span id="478">478</span>
<span id="479">479</span>
<span id="480">480</span>
<span id="481">481</span>
<span id="482">482</span>
<span id="483">483</span>
<span id="484">484</span>
<span id="485">485</span>
<span id="486">486</span>
<span id="487">487</span>
<span id="488">488</span>
<span id="489">489</span>
<span id="490">490</span>
<span id="491">491</span>
<span id="492">492</span>
<span id="493">493</span>
<span id="494">494</span>
<span id="495">495</span>
<span id="496">496</span>
<span id="497">497</span>
<span id="498">498</span>
<span id="499">499</span>
<span id="500">500</span>
<span id="501">501</span>
<span id="502">502</span>
<span id="503">503</span>
<span id="504">504</span>
<span id="505">505</span>
<span id="506">506</span>
<span id="507">507</span>
<span id="508">508</span>
<span id="509">509</span>
<span id="510">510</span>
<span id="511">511</span>
</pre><pre class="rust ">
<span class="doccomment">/*!
Column oriented field storage for tantivy.
@@ -518,6 +591,19 @@ values stored.
Read access performance is comparable to that of an array lookup.
*/</span>
<span class="kw">use</span> <span class="ident">common</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Cardinality</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">FieldType</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Value</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">delete</span>::<span class="ident">DeleteBitSet</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">delete</span>::<span class="ident">write_delete_bitset</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">error</span>::{<span class="ident">FastFieldNotAvailableError</span>, <span class="prelude-ty">Result</span>};
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">facet_reader</span>::<span class="ident">FacetReader</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">multivalued</span>::<span class="ident">MultiValueIntFastFieldReader</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">reader</span>::<span class="ident">FastFieldReader</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">serializer</span>::<span class="ident">FastFieldSerializer</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">writer</span>::{<span class="ident">FastFieldsWriter</span>, <span class="ident">IntFastFieldWriter</span>};
<span class="kw">mod</span> <span class="ident">reader</span>;
<span class="kw">mod</span> <span class="ident">writer</span>;
<span class="kw">mod</span> <span class="ident">serializer</span>;
@@ -526,33 +612,104 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">mod</span> <span class="ident">facet_reader</span>;
<span class="kw">mod</span> <span class="ident">multivalued</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">delete</span>::<span class="ident">write_delete_bitset</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">delete</span>::<span class="ident">DeleteBitSet</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">writer</span>::{<span class="ident">FastFieldsWriter</span>, <span class="ident">IntFastFieldWriter</span>};
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">reader</span>::{<span class="ident">I64FastFieldReader</span>, <span class="ident">U64FastFieldReader</span>};
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">reader</span>::<span class="ident">FastFieldReader</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">serializer</span>::<span class="ident">FastFieldSerializer</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">error</span>::{<span class="ident">FastFieldNotAvailableError</span>, <span class="prelude-ty">Result</span>};
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">facet_reader</span>::<span class="ident">FacetReader</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">multivalued</span>::<span class="ident">MultiValueIntFastFieldReader</span>;
<span class="doccomment">/// Trait for types that are allowed for fast fields: (u64 or i64).</span>
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">FastValue</span>: <span class="ident">Default</span> <span class="op">+</span> <span class="ident">Clone</span> <span class="op">+</span> <span class="ident">Copy</span> {
<span class="doccomment">/// Converts a value from u64</span>
<span class="doccomment">///</span>
<span class="doccomment">/// Internally all fast field values are encoded as u64.</span>
<span class="kw">fn</span> <span class="ident">from_u64</span>(<span class="ident">val</span>: <span class="ident">u64</span>) <span class="op">-&gt;</span> <span class="self">Self</span>;
<span class="doccomment">/// Converts a value to u64.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// Internally all fast field values are encoded as u64.</span>
<span class="kw">fn</span> <span class="ident">to_u64</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">u64</span>;
<span class="doccomment">/// Returns the fast field cardinality that can be extracted from the given</span>
<span class="doccomment">/// `FieldType`.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// If the type is not a fast field, `None` is returned.</span>
<span class="kw">fn</span> <span class="ident">fast_field_cardinality</span>(<span class="ident">field_type</span>: <span class="kw-2">&amp;</span><span class="ident">FieldType</span>) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Cardinality</span><span class="op">&gt;</span>;
<span class="doccomment">/// Cast value to `u64`.</span>
<span class="doccomment">/// The value is just reinterpreted in memory.</span>
<span class="kw">fn</span> <span class="ident">as_u64</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">u64</span>;
}
<span class="kw">impl</span> <span class="ident">FastValue</span> <span class="kw">for</span> <span class="ident">u64</span> {
<span class="kw">fn</span> <span class="ident">from_u64</span>(<span class="ident">val</span>: <span class="ident">u64</span>) <span class="op">-&gt;</span> <span class="self">Self</span> {
<span class="ident">val</span>
}
<span class="kw">fn</span> <span class="ident">to_u64</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">u64</span> {
<span class="kw-2">*</span><span class="self">self</span>
}
<span class="kw">fn</span> <span class="ident">as_u64</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">u64</span> {
<span class="kw-2">*</span><span class="self">self</span>
}
<span class="kw">fn</span> <span class="ident">fast_field_cardinality</span>(<span class="ident">field_type</span>: <span class="kw-2">&amp;</span><span class="ident">FieldType</span>) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Cardinality</span><span class="op">&gt;</span> {
<span class="kw">match</span> <span class="kw-2">*</span><span class="ident">field_type</span> {
<span class="ident">FieldType</span>::<span class="ident">U64</span>(<span class="kw-2">ref</span> <span class="ident">integer_options</span>) <span class="op">=&gt;</span>
<span class="ident">integer_options</span>.<span class="ident">get_fastfield_cardinality</span>(),
<span class="ident">FieldType</span>::<span class="ident">HierarchicalFacet</span> <span class="op">=&gt;</span>
<span class="prelude-val">Some</span>(<span class="ident">Cardinality</span>::<span class="ident">MultiValues</span>),
_ <span class="op">=&gt;</span> <span class="prelude-val">None</span>,
}
}
}
<span class="kw">impl</span> <span class="ident">FastValue</span> <span class="kw">for</span> <span class="ident">i64</span> {
<span class="kw">fn</span> <span class="ident">from_u64</span>(<span class="ident">val</span>: <span class="ident">u64</span>) <span class="op">-&gt;</span> <span class="self">Self</span> {
<span class="ident">common</span>::<span class="ident">u64_to_i64</span>(<span class="ident">val</span>)
}
<span class="kw">fn</span> <span class="ident">to_u64</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">u64</span> {
<span class="ident">common</span>::<span class="ident">i64_to_u64</span>(<span class="kw-2">*</span><span class="self">self</span>)
}
<span class="kw">fn</span> <span class="ident">fast_field_cardinality</span>(<span class="ident">field_type</span>: <span class="kw-2">&amp;</span><span class="ident">FieldType</span>) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">Cardinality</span><span class="op">&gt;</span> {
<span class="kw">match</span> <span class="kw-2">*</span><span class="ident">field_type</span> {
<span class="ident">FieldType</span>::<span class="ident">I64</span>(<span class="kw-2">ref</span> <span class="ident">integer_options</span>) <span class="op">=&gt;</span>
<span class="ident">integer_options</span>.<span class="ident">get_fastfield_cardinality</span>(),
_ <span class="op">=&gt;</span> <span class="prelude-val">None</span>,
}
}
<span class="kw">fn</span> <span class="ident">as_u64</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">u64</span> {
<span class="kw-2">*</span><span class="self">self</span> <span class="kw">as</span> <span class="ident">u64</span>
}
}
<span class="kw">fn</span> <span class="ident">value_to_u64</span>(<span class="ident">value</span>: <span class="kw-2">&amp;</span><span class="ident">Value</span>) <span class="op">-&gt;</span> <span class="ident">u64</span> {
<span class="kw">match</span> <span class="kw-2">*</span><span class="ident">value</span> {
<span class="ident">Value</span>::<span class="ident">U64</span>(<span class="kw-2">ref</span> <span class="ident">val</span>) <span class="op">=&gt;</span> <span class="kw-2">*</span><span class="ident">val</span>,
<span class="ident">Value</span>::<span class="ident">I64</span>(<span class="kw-2">ref</span> <span class="ident">val</span>) <span class="op">=&gt;</span> <span class="ident">common</span>::<span class="ident">i64_to_u64</span>(<span class="kw-2">*</span><span class="ident">val</span>),
_ <span class="op">=&gt;</span> <span class="macro">panic</span><span class="macro">!</span>(<span class="string">&quot;Expected a u64/i64 field, got {:?} &quot;</span>, <span class="ident">value</span>),
}
}
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
<span class="kw">mod</span> <span class="ident">tests</span> {
<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Field</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">path</span>::<span class="ident">Path</span>;
<span class="kw">use</span> <span class="ident">common</span>::<span class="ident">CompositeFile</span>;
<span class="kw">use</span> <span class="ident">directory</span>::{<span class="ident">Directory</span>, <span class="ident">RAMDirectory</span>, <span class="ident">WritePtr</span>};
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Document</span>;
<span class="kw">use</span> <span class="ident">schema</span>::{<span class="ident">Schema</span>, <span class="ident">SchemaBuilder</span>};
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">FAST</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashMap</span>;
<span class="kw">use</span> <span class="ident">test</span>::<span class="ident">Bencher</span>;
<span class="kw">use</span> <span class="ident">test</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">FastFieldReader</span>;
<span class="kw">use</span> <span class="ident">rand</span>::<span class="ident">Rng</span>;
<span class="kw">use</span> <span class="ident">rand</span>::<span class="ident">SeedableRng</span>;
<span class="kw">use</span> <span class="ident">common</span>::<span class="ident">CompositeFile</span>;
<span class="kw">use</span> <span class="ident">rand</span>::<span class="ident">XorShiftRng</span>;
<span class="kw">use</span> <span class="ident">schema</span>::{<span class="ident">Schema</span>, <span class="ident">SchemaBuilder</span>};
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Document</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">FAST</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Field</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashMap</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">path</span>::<span class="ident">Path</span>;
<span class="kw">use</span> <span class="kw">super</span>::<span class="kw-2">*</span>;
<span class="kw">use</span> <span class="ident">test</span>;
<span class="kw">use</span> <span class="ident">test</span>::<span class="ident">Bencher</span>;
<span class="macro">lazy_static</span><span class="macro">!</span> {
<span class="kw">static</span> <span class="kw-2">ref</span> <span class="ident">SCHEMA</span>: <span class="ident">Schema</span> <span class="op">=</span> {
@@ -565,15 +722,9 @@ Read access performance is comparable to that of an array lookup.
};
}
<span class="kw">fn</span> <span class="ident">add_single_field_doc</span>(<span class="ident">fast_field_writers</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">FastFieldsWriter</span>, <span class="ident">field</span>: <span class="ident">Field</span>, <span class="ident">value</span>: <span class="ident">u64</span>) {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">doc</span> <span class="op">=</span> <span class="ident">Document</span>::<span class="ident">default</span>();
<span class="ident">doc</span>.<span class="ident">add_u64</span>(<span class="ident">field</span>, <span class="ident">value</span>);
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="ident">doc</span>);
}
<span class="attribute">#[<span class="ident">test</span>]</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_fastfield</span>() {
<span class="kw">let</span> <span class="ident">test_fastfield</span> <span class="op">=</span> <span class="ident">U64FastFieldReader</span>::<span class="ident">from</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">100</span>, <span class="number">200</span>, <span class="number">300</span>]);
<span class="kw">let</span> <span class="ident">test_fastfield</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>::<span class="ident">from</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">100</span>, <span class="number">200</span>, <span class="number">300</span>]);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">test_fastfield</span>.<span class="ident">get</span>(<span class="number">0</span>), <span class="number">100</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">test_fastfield</span>.<span class="ident">get</span>(<span class="number">1</span>), <span class="number">200</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">test_fastfield</span>.<span class="ident">get</span>(<span class="number">2</span>), <span class="number">300</span>);
@@ -587,9 +738,9 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="ident">write</span>: <span class="ident">WritePtr</span> <span class="op">=</span> <span class="ident">directory</span>.<span class="ident">open_write</span>(<span class="ident">Path</span>::<span class="ident">new</span>(<span class="string">&quot;test&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">serializer</span> <span class="op">=</span> <span class="ident">FastFieldSerializer</span>::<span class="ident">from_write</span>(<span class="ident">write</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">fast_field_writers</span> <span class="op">=</span> <span class="ident">FastFieldsWriter</span>::<span class="ident">from_schema</span>(<span class="kw-2">&amp;</span><span class="ident">SCHEMA</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">13u64</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">14u64</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">2u64</span>);
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">13u64</span>));
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">14u64</span>));
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">2u64</span>));
<span class="ident">fast_field_writers</span>
.<span class="ident">serialize</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&amp;</span><span class="ident">HashMap</span>::<span class="ident">new</span>())
.<span class="ident">unwrap</span>();
@@ -602,7 +753,7 @@ Read access performance is comparable to that of an array lookup.
{
<span class="kw">let</span> <span class="ident">composite_file</span> <span class="op">=</span> <span class="ident">CompositeFile</span>::<span class="ident">open</span>(<span class="kw-2">&amp;</span><span class="ident">source</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">field_source</span> <span class="op">=</span> <span class="ident">composite_file</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span> <span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">field_source</span>);
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>::<span class="ident">open</span>(<span class="ident">field_source</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="number">0</span>), <span class="number">13u64</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="number">1</span>), <span class="number">14u64</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="number">2</span>), <span class="number">2u64</span>);
@@ -617,15 +768,15 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="ident">write</span>: <span class="ident">WritePtr</span> <span class="op">=</span> <span class="ident">directory</span>.<span class="ident">open_write</span>(<span class="ident">Path</span>::<span class="ident">new</span>(<span class="string">&quot;test&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">serializer</span> <span class="op">=</span> <span class="ident">FastFieldSerializer</span>::<span class="ident">from_write</span>(<span class="ident">write</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">fast_field_writers</span> <span class="op">=</span> <span class="ident">FastFieldsWriter</span>::<span class="ident">from_schema</span>(<span class="kw-2">&amp;</span><span class="ident">SCHEMA</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">4u64</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">14_082_001u64</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">3_052u64</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">9002u64</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">15_001u64</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">777u64</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">1_002u64</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">1_501u64</span>);
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">215u64</span>);
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">4u64</span>));
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">14_082_001u64</span>));
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">3_052u64</span>));
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">9_002u64</span>));
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">15_001u64</span>));
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">777u64</span>));
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">1_002u64</span>));
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">1_501u64</span>));
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">215u64</span>));
<span class="ident">fast_field_writers</span>
.<span class="ident">serialize</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&amp;</span><span class="ident">HashMap</span>::<span class="ident">new</span>())
.<span class="ident">unwrap</span>();
@@ -637,8 +788,8 @@ Read access performance is comparable to that of an array lookup.
}
{
<span class="kw">let</span> <span class="ident">fast_fields_composite</span> <span class="op">=</span> <span class="ident">CompositeFile</span>::<span class="ident">open</span>(<span class="kw-2">&amp;</span><span class="ident">source</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span>
<span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>());
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>::<span class="ident">open</span>(<span class="ident">data</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="number">0</span>), <span class="number">4u64</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="number">1</span>), <span class="number">14_082_001u64</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="number">2</span>), <span class="number">3_052u64</span>);
@@ -661,7 +812,7 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">serializer</span> <span class="op">=</span> <span class="ident">FastFieldSerializer</span>::<span class="ident">from_write</span>(<span class="ident">write</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">fast_field_writers</span> <span class="op">=</span> <span class="ident">FastFieldsWriter</span>::<span class="ident">from_schema</span>(<span class="kw-2">&amp;</span><span class="ident">SCHEMA</span>);
<span class="kw">for</span> _ <span class="kw">in</span> <span class="number">0</span>..<span class="number">10_000</span> {
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">100_000u64</span>);
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">100_000u64</span>));
}
<span class="ident">fast_field_writers</span>
.<span class="ident">serialize</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&amp;</span><span class="ident">HashMap</span>::<span class="ident">new</span>())
@@ -674,8 +825,8 @@ Read access performance is comparable to that of an array lookup.
}
{
<span class="kw">let</span> <span class="ident">fast_fields_composite</span> <span class="op">=</span> <span class="ident">CompositeFile</span>::<span class="ident">open</span>(<span class="kw-2">&amp;</span><span class="ident">source</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span>
<span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>());
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>::<span class="ident">open</span>(<span class="ident">data</span>);
<span class="kw">for</span> <span class="ident">doc</span> <span class="kw">in</span> <span class="number">0</span>..<span class="number">10_000</span> {
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="ident">doc</span>), <span class="number">100_000u64</span>);
}
@@ -692,13 +843,9 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">serializer</span> <span class="op">=</span> <span class="ident">FastFieldSerializer</span>::<span class="ident">from_write</span>(<span class="ident">write</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">fast_field_writers</span> <span class="op">=</span> <span class="ident">FastFieldsWriter</span>::<span class="ident">from_schema</span>(<span class="kw-2">&amp;</span><span class="ident">SCHEMA</span>);
<span class="comment">// forcing the amplitude to be high</span>
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="number">0u64</span>);
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">0u64</span>));
<span class="kw">for</span> <span class="ident">i</span> <span class="kw">in</span> <span class="number">0u64</span>..<span class="number">10_000u64</span> {
<span class="ident">add_single_field_doc</span>(
<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>,
<span class="kw-2">*</span><span class="ident">FIELD</span>,
<span class="number">5_000_000_000_000_000_000u64</span> <span class="op">+</span> <span class="ident">i</span>,
);
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="number">5_000_000_000_000_000_000u64</span> <span class="op">+</span> <span class="ident">i</span>));
}
<span class="ident">fast_field_writers</span>
.<span class="ident">serialize</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&amp;</span><span class="ident">HashMap</span>::<span class="ident">new</span>())
@@ -711,9 +858,8 @@ Read access performance is comparable to that of an array lookup.
}
{
<span class="kw">let</span> <span class="ident">fast_fields_composite</span> <span class="op">=</span> <span class="ident">CompositeFile</span>::<span class="ident">open</span>(<span class="kw-2">&amp;</span><span class="ident">source</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span>
<span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>());
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>::<span class="ident">open</span>(<span class="ident">data</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="number">0</span>), <span class="number">0u64</span>);
<span class="kw">for</span> <span class="ident">doc</span> <span class="kw">in</span> <span class="number">1</span>..<span class="number">10_001</span> {
<span class="macro">assert_eq</span><span class="macro">!</span>(
@@ -752,8 +898,8 @@ Read access performance is comparable to that of an array lookup.
}
{
<span class="kw">let</span> <span class="ident">fast_fields_composite</span> <span class="op">=</span> <span class="ident">CompositeFile</span>::<span class="ident">open</span>(<span class="kw-2">&amp;</span><span class="ident">source</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span>: <span class="ident">I64FastFieldReader</span> <span class="op">=</span>
<span class="ident">I64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="ident">i64_field</span>).<span class="ident">unwrap</span>());
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="ident">i64_field</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="op">&lt;</span><span class="ident">i64</span><span class="op">&gt;</span>::<span class="ident">open</span>(<span class="ident">data</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">min_value</span>(), <span class="op">-</span><span class="number">100i64</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">max_value</span>(), <span class="number">9_999i64</span>);
@@ -791,8 +937,8 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="ident">source</span> <span class="op">=</span> <span class="ident">directory</span>.<span class="ident">open_read</span>(<span class="kw-2">&amp;</span><span class="ident">path</span>).<span class="ident">unwrap</span>();
{
<span class="kw">let</span> <span class="ident">fast_fields_composite</span> <span class="op">=</span> <span class="ident">CompositeFile</span>::<span class="ident">open</span>(<span class="kw-2">&amp;</span><span class="ident">source</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span>: <span class="ident">I64FastFieldReader</span> <span class="op">=</span>
<span class="ident">I64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="ident">i64_field</span>).<span class="ident">unwrap</span>());
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="ident">i64_field</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="op">&lt;</span><span class="ident">i64</span><span class="op">&gt;</span>::<span class="ident">open</span>(<span class="ident">data</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="number">0u32</span>), <span class="number">0i64</span>);
}
}
@@ -815,8 +961,8 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="ident">write</span>: <span class="ident">WritePtr</span> <span class="op">=</span> <span class="ident">directory</span>.<span class="ident">open_write</span>(<span class="ident">Path</span>::<span class="ident">new</span>(<span class="string">&quot;test&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">serializer</span> <span class="op">=</span> <span class="ident">FastFieldSerializer</span>::<span class="ident">from_write</span>(<span class="ident">write</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">fast_field_writers</span> <span class="op">=</span> <span class="ident">FastFieldsWriter</span>::<span class="ident">from_schema</span>(<span class="kw-2">&amp;</span><span class="ident">SCHEMA</span>);
<span class="kw">for</span> <span class="ident">x</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="ident">permutation</span> {
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="kw-2">*</span><span class="ident">x</span>);
<span class="kw">for</span> <span class="kw-2">&amp;</span><span class="ident">x</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="ident">permutation</span> {
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="ident">x</span>));
}
<span class="ident">fast_field_writers</span>
.<span class="ident">serialize</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&amp;</span><span class="ident">HashMap</span>::<span class="ident">new</span>())
@@ -826,8 +972,8 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="ident">source</span> <span class="op">=</span> <span class="ident">directory</span>.<span class="ident">open_read</span>(<span class="kw-2">&amp;</span><span class="ident">path</span>).<span class="ident">unwrap</span>();
{
<span class="kw">let</span> <span class="ident">fast_fields_composite</span> <span class="op">=</span> <span class="ident">CompositeFile</span>::<span class="ident">open</span>(<span class="kw-2">&amp;</span><span class="ident">source</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span>
<span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>());
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>::<span class="ident">open</span>(<span class="ident">data</span>);
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">a</span> <span class="op">=</span> <span class="number">0u64</span>;
<span class="kw">for</span> _ <span class="kw">in</span> <span class="number">0</span>..<span class="ident">n</span> {
@@ -872,8 +1018,8 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="ident">write</span>: <span class="ident">WritePtr</span> <span class="op">=</span> <span class="ident">directory</span>.<span class="ident">open_write</span>(<span class="ident">Path</span>::<span class="ident">new</span>(<span class="string">&quot;test&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">serializer</span> <span class="op">=</span> <span class="ident">FastFieldSerializer</span>::<span class="ident">from_write</span>(<span class="ident">write</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">fast_field_writers</span> <span class="op">=</span> <span class="ident">FastFieldsWriter</span>::<span class="ident">from_schema</span>(<span class="kw-2">&amp;</span><span class="ident">SCHEMA</span>);
<span class="kw">for</span> <span class="ident">x</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="ident">permutation</span> {
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="kw-2">*</span><span class="ident">x</span>);
<span class="kw">for</span> <span class="kw-2">&amp;</span><span class="ident">x</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="ident">permutation</span> {
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="ident">x</span>));
}
<span class="ident">fast_field_writers</span>
.<span class="ident">serialize</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&amp;</span><span class="ident">HashMap</span>::<span class="ident">new</span>())
@@ -883,8 +1029,8 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="ident">source</span> <span class="op">=</span> <span class="ident">directory</span>.<span class="ident">open_read</span>(<span class="kw-2">&amp;</span><span class="ident">path</span>).<span class="ident">unwrap</span>();
{
<span class="kw">let</span> <span class="ident">fast_fields_composite</span> <span class="op">=</span> <span class="ident">CompositeFile</span>::<span class="ident">open</span>(<span class="kw-2">&amp;</span><span class="ident">source</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span>
<span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>());
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>::<span class="ident">open</span>(<span class="ident">data</span>);
<span class="ident">b</span>.<span class="ident">iter</span>(<span class="op">||</span> {
<span class="kw">let</span> <span class="ident">n</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">black_box</span>(<span class="number">7000u32</span>);
@@ -906,8 +1052,8 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="ident">write</span>: <span class="ident">WritePtr</span> <span class="op">=</span> <span class="ident">directory</span>.<span class="ident">open_write</span>(<span class="ident">Path</span>::<span class="ident">new</span>(<span class="string">&quot;test&quot;</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">serializer</span> <span class="op">=</span> <span class="ident">FastFieldSerializer</span>::<span class="ident">from_write</span>(<span class="ident">write</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">fast_field_writers</span> <span class="op">=</span> <span class="ident">FastFieldsWriter</span>::<span class="ident">from_schema</span>(<span class="kw-2">&amp;</span><span class="ident">SCHEMA</span>);
<span class="kw">for</span> <span class="ident">x</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="ident">permutation</span> {
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">fast_field_writers</span>, <span class="kw-2">*</span><span class="ident">FIELD</span>, <span class="kw-2">*</span><span class="ident">x</span>);
<span class="kw">for</span> <span class="kw-2">&amp;</span><span class="ident">x</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="ident">permutation</span> {
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=&gt;</span><span class="ident">x</span>));
}
<span class="ident">fast_field_writers</span>
.<span class="ident">serialize</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&amp;</span><span class="ident">HashMap</span>::<span class="ident">new</span>())
@@ -917,8 +1063,8 @@ Read access performance is comparable to that of an array lookup.
<span class="kw">let</span> <span class="ident">source</span> <span class="op">=</span> <span class="ident">directory</span>.<span class="ident">open_read</span>(<span class="kw-2">&amp;</span><span class="ident">path</span>).<span class="ident">unwrap</span>();
{
<span class="kw">let</span> <span class="ident">fast_fields_composite</span> <span class="op">=</span> <span class="ident">CompositeFile</span>::<span class="ident">open</span>(<span class="kw-2">&amp;</span><span class="ident">source</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span>
<span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>());
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">fast_fields_composite</span>.<span class="ident">open_read</span>(<span class="kw-2">*</span><span class="ident">FIELD</span>).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>::<span class="ident">open</span>(<span class="ident">data</span>);
<span class="ident">b</span>.<span class="ident">iter</span>(<span class="op">||</span> {
<span class="kw">let</span> <span class="ident">n</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">black_box</span>(<span class="number">1000u32</span>);

View File

@@ -54,18 +54,185 @@
</form>
</nav>
<section id='main' class="content"><pre class="line-numbers"><span id="1">1</span>
<span id="2">2</span>
<span id="3">3</span>
<span id="4">4</span>
<span id="5">5</span>
<section id='main' class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10">10</span>
<span id="11">11</span>
<span id="12">12</span>
<span id="13">13</span>
<span id="14">14</span>
<span id="15">15</span>
<span id="16">16</span>
<span id="17">17</span>
<span id="18">18</span>
<span id="19">19</span>
<span id="20">20</span>
<span id="21">21</span>
<span id="22">22</span>
<span id="23">23</span>
<span id="24">24</span>
<span id="25">25</span>
<span id="26">26</span>
<span id="27">27</span>
<span id="28">28</span>
<span id="29">29</span>
<span id="30">30</span>
<span id="31">31</span>
<span id="32">32</span>
<span id="33">33</span>
<span id="34">34</span>
<span id="35">35</span>
<span id="36">36</span>
<span id="37">37</span>
<span id="38">38</span>
<span id="39">39</span>
<span id="40">40</span>
<span id="41">41</span>
<span id="42">42</span>
<span id="43">43</span>
<span id="44">44</span>
<span id="45">45</span>
<span id="46">46</span>
<span id="47">47</span>
<span id="48">48</span>
<span id="49">49</span>
<span id="50">50</span>
<span id="51">51</span>
<span id="52">52</span>
<span id="53">53</span>
<span id="54">54</span>
<span id="55">55</span>
<span id="56">56</span>
<span id="57">57</span>
<span id="58">58</span>
<span id="59">59</span>
<span id="60">60</span>
<span id="61">61</span>
<span id="62">62</span>
<span id="63">63</span>
<span id="64">64</span>
<span id="65">65</span>
<span id="66">66</span>
<span id="67">67</span>
<span id="68">68</span>
<span id="69">69</span>
<span id="70">70</span>
<span id="71">71</span>
<span id="72">72</span>
<span id="73">73</span>
<span id="74">74</span>
<span id="75">75</span>
<span id="76">76</span>
<span id="77">77</span>
<span id="78">78</span>
<span id="79">79</span>
<span id="80">80</span>
<span id="81">81</span>
<span id="82">82</span>
<span id="83">83</span>
<span id="84">84</span>
<span id="85">85</span>
<span id="86">86</span>
<span id="87">87</span>
<span id="88">88</span>
<span id="89">89</span>
</pre><pre class="rust ">
<span class="kw">mod</span> <span class="ident">writer</span>;
<span class="kw">mod</span> <span class="ident">reader</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">writer</span>::<span class="ident">MultiValueIntFastFieldWriter</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="self">self</span>::<span class="ident">reader</span>::<span class="ident">MultiValueIntFastFieldReader</span>;
</pre>
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
<span class="kw">mod</span> <span class="ident">tests</span> {
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">SchemaBuilder</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Cardinality</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">IntOptions</span>;
<span class="kw">use</span> <span class="ident">Index</span>;
<span class="attribute">#[<span class="ident">test</span>]</span>
<span class="kw">fn</span> <span class="ident">test_multivalued_u64</span>() {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">schema_builder</span> <span class="op">=</span> <span class="ident">SchemaBuilder</span>::<span class="ident">default</span>();
<span class="kw">let</span> <span class="ident">field</span> <span class="op">=</span> <span class="ident">schema_builder</span>.<span class="ident">add_u64_field</span>(
<span class="string">&quot;multifield&quot;</span>,
<span class="ident">IntOptions</span>::<span class="ident">default</span>().<span class="ident">set_fast</span>(<span class="ident">Cardinality</span>::<span class="ident">MultiValues</span>)
);
<span class="kw">let</span> <span class="ident">schema</span> <span class="op">=</span> <span class="ident">schema_builder</span>.<span class="ident">build</span>();
<span class="kw">let</span> <span class="ident">index</span> <span class="op">=</span> <span class="ident">Index</span>::<span class="ident">create_in_ram</span>(<span class="ident">schema</span>);
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">index_writer</span> <span class="op">=</span> <span class="ident">index</span>.<span class="ident">writer_with_num_threads</span>(<span class="number">1</span>, <span class="number">3_000_000</span>).<span class="ident">unwrap</span>();
<span class="ident">index_writer</span>.<span class="ident">add_document</span>(<span class="macro">doc</span><span class="macro">!</span>(<span class="ident">field</span><span class="op">=&gt;</span><span class="number">1u64</span>, <span class="ident">field</span><span class="op">=&gt;</span><span class="number">3u64</span>));
<span class="ident">index_writer</span>.<span class="ident">add_document</span>(<span class="macro">doc</span><span class="macro">!</span>());
<span class="ident">index_writer</span>.<span class="ident">add_document</span>(<span class="macro">doc</span><span class="macro">!</span>(<span class="ident">field</span><span class="op">=&gt;</span><span class="number">4u64</span>));
<span class="ident">index_writer</span>.<span class="ident">add_document</span>(<span class="macro">doc</span><span class="macro">!</span>(<span class="ident">field</span><span class="op">=&gt;</span><span class="number">5u64</span>, <span class="ident">field</span><span class="op">=&gt;</span><span class="number">20u64</span>,<span class="ident">field</span><span class="op">=&gt;</span><span class="number">1u64</span>));
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">index_writer</span>.<span class="ident">commit</span>().<span class="ident">is_ok</span>());
<span class="ident">index</span>.<span class="ident">load_searchers</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">searcher</span> <span class="op">=</span> <span class="ident">index</span>.<span class="ident">searcher</span>();
<span class="kw">let</span> <span class="ident">reader</span> <span class="op">=</span> <span class="ident">searcher</span>.<span class="ident">segment_reader</span>(<span class="number">0</span>);
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">vals</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
<span class="kw">let</span> <span class="ident">multi_value_reader</span> <span class="op">=</span> <span class="ident">reader</span>.<span class="ident">multi_fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>(<span class="ident">field</span>).<span class="ident">unwrap</span>();
{
<span class="ident">multi_value_reader</span>.<span class="ident">get_vals</span>(<span class="number">2</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">vals</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="kw-2">&amp;</span><span class="ident">vals</span>, <span class="kw-2">&amp;</span>[<span class="number">4u64</span>]);
}
{
<span class="ident">multi_value_reader</span>.<span class="ident">get_vals</span>(<span class="number">0</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">vals</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="kw-2">&amp;</span><span class="ident">vals</span>, <span class="kw-2">&amp;</span>[<span class="number">1u64</span>, <span class="number">3u64</span>]);
}
{
<span class="ident">multi_value_reader</span>.<span class="ident">get_vals</span>(<span class="number">1</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">vals</span>);
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">vals</span>.<span class="ident">is_empty</span>());
}
}
<span class="attribute">#[<span class="ident">test</span>]</span>
<span class="kw">fn</span> <span class="ident">test_multivalued_i64</span>() {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">schema_builder</span> <span class="op">=</span> <span class="ident">SchemaBuilder</span>::<span class="ident">default</span>();
<span class="kw">let</span> <span class="ident">field</span> <span class="op">=</span> <span class="ident">schema_builder</span>.<span class="ident">add_i64_field</span>(
<span class="string">&quot;multifield&quot;</span>,
<span class="ident">IntOptions</span>::<span class="ident">default</span>().<span class="ident">set_fast</span>(<span class="ident">Cardinality</span>::<span class="ident">MultiValues</span>)
);
<span class="kw">let</span> <span class="ident">schema</span> <span class="op">=</span> <span class="ident">schema_builder</span>.<span class="ident">build</span>();
<span class="kw">let</span> <span class="ident">index</span> <span class="op">=</span> <span class="ident">Index</span>::<span class="ident">create_in_ram</span>(<span class="ident">schema</span>);
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">index_writer</span> <span class="op">=</span> <span class="ident">index</span>.<span class="ident">writer_with_num_threads</span>(<span class="number">1</span>, <span class="number">3_000_000</span>).<span class="ident">unwrap</span>();
<span class="ident">index_writer</span>.<span class="ident">add_document</span>(<span class="macro">doc</span><span class="macro">!</span>(<span class="ident">field</span><span class="op">=&gt;</span> <span class="number">1i64</span>, <span class="ident">field</span> <span class="op">=&gt;</span> <span class="number">3i64</span>));
<span class="ident">index_writer</span>.<span class="ident">add_document</span>(<span class="macro">doc</span><span class="macro">!</span>());
<span class="ident">index_writer</span>.<span class="ident">add_document</span>(<span class="macro">doc</span><span class="macro">!</span>(<span class="ident">field</span><span class="op">=&gt;</span> <span class="op">-</span><span class="number">4i64</span>));
<span class="ident">index_writer</span>.<span class="ident">add_document</span>(<span class="macro">doc</span><span class="macro">!</span>(<span class="ident">field</span><span class="op">=&gt;</span> <span class="op">-</span><span class="number">5i64</span>, <span class="ident">field</span> <span class="op">=&gt;</span> <span class="op">-</span><span class="number">20i64</span>, <span class="ident">field</span><span class="op">=&gt;</span><span class="number">1i64</span>));
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">index_writer</span>.<span class="ident">commit</span>().<span class="ident">is_ok</span>());
<span class="ident">index</span>.<span class="ident">load_searchers</span>().<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">searcher</span> <span class="op">=</span> <span class="ident">index</span>.<span class="ident">searcher</span>();
<span class="kw">let</span> <span class="ident">reader</span> <span class="op">=</span> <span class="ident">searcher</span>.<span class="ident">segment_reader</span>(<span class="number">0</span>);
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">vals</span> <span class="op">=</span> <span class="ident">Vec</span>::<span class="ident">new</span>();
<span class="kw">let</span> <span class="ident">multi_value_reader</span> <span class="op">=</span> <span class="ident">reader</span>.<span class="ident">multi_fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">i64</span><span class="op">&gt;</span>(<span class="ident">field</span>).<span class="ident">unwrap</span>();
{
<span class="ident">multi_value_reader</span>.<span class="ident">get_vals</span>(<span class="number">2</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">vals</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="kw-2">&amp;</span><span class="ident">vals</span>, <span class="kw-2">&amp;</span>[<span class="op">-</span><span class="number">4i64</span>]);
}
{
<span class="ident">multi_value_reader</span>.<span class="ident">get_vals</span>(<span class="number">0</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">vals</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="kw-2">&amp;</span><span class="ident">vals</span>, <span class="kw-2">&amp;</span>[<span class="number">1i64</span>, <span class="number">3i64</span>]);
}
{
<span class="ident">multi_value_reader</span>.<span class="ident">get_vals</span>(<span class="number">1</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">vals</span>);
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">vals</span>.<span class="ident">is_empty</span>());
}
{
<span class="ident">multi_value_reader</span>.<span class="ident">get_vals</span>(<span class="number">3</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">vals</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="kw-2">&amp;</span><span class="ident">vals</span>, <span class="kw-2">&amp;</span>[<span class="op">-</span><span class="number">5i64</span>, <span class="op">-</span><span class="number">20i64</span>, <span class="number">1i64</span>]);
}
}
}</pre>
</section>
<section id='search' class="content hidden"></section>

View File

@@ -164,14 +164,10 @@
<span id="108">108</span>
<span id="109">109</span>
<span id="110">110</span>
<span id="111">111</span>
<span id="112">112</span>
<span id="113">113</span>
</pre><pre class="rust ">
<span class="kw">use</span> <span class="ident">DocId</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">FastFieldReader</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::{<span class="ident">FastFieldReader</span>, <span class="ident">FastValue</span>};
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">U64FastFieldReader</span>;
<span class="doccomment">/// Reader for a multivalued `u64` fast field.</span>
<span class="doccomment">///</span>
@@ -182,31 +178,29 @@
<span class="doccomment">/// The `idx_reader` associated, for each document, the index of its first value.</span>
<span class="doccomment">///</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MultiValueIntFastFieldReader</span> {
<span class="ident">idx_reader</span>: <span class="ident">U64FastFieldReader</span>,
<span class="ident">vals_reader</span>: <span class="ident">U64FastFieldReader</span>,
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MultiValueIntFastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">&gt;</span> {
<span class="ident">idx_reader</span>: <span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>,
<span class="ident">vals_reader</span>: <span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;</span>
}
<span class="kw">impl</span> <span class="ident">MultiValueIntFastFieldReader</span> {
<span class="kw">impl</span><span class="op">&lt;</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">&gt;</span> <span class="ident">MultiValueIntFastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;</span> {
<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn</span> <span class="ident">open</span>(
<span class="ident">idx_reader</span>: <span class="ident">U64FastFieldReader</span>,
<span class="ident">vals_reader</span>: <span class="ident">U64FastFieldReader</span>,
) <span class="op">-&gt;</span> <span class="ident">MultiValueIntFastFieldReader</span> {
<span class="ident">idx_reader</span>: <span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>,
<span class="ident">vals_reader</span>: <span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;</span>,
) <span class="op">-&gt;</span> <span class="ident">MultiValueIntFastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;</span> {
<span class="ident">MultiValueIntFastFieldReader</span> {
<span class="ident">idx_reader</span>: <span class="ident">idx_reader</span>,
<span class="ident">vals_reader</span>: <span class="ident">vals_reader</span>,
<span class="ident">idx_reader</span>,
<span class="ident">vals_reader</span>
}
}
<span class="doccomment">/// Returns the array of values associated to the given `doc`.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_vals</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="ident">DocId</span>, <span class="ident">vals</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>) {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_vals</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="ident">DocId</span>, <span class="ident">vals</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;</span>) {
<span class="kw">let</span> <span class="ident">start</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">idx_reader</span>.<span class="ident">get</span>(<span class="ident">doc</span>) <span class="kw">as</span> <span class="ident">u32</span>;
<span class="kw">let</span> <span class="ident">stop</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">idx_reader</span>.<span class="ident">get</span>(<span class="ident">doc</span> <span class="op">+</span> <span class="number">1</span>) <span class="kw">as</span> <span class="ident">u32</span>;
<span class="ident">vals</span>.<span class="ident">clear</span>();
<span class="kw">for</span> <span class="ident">val_id</span> <span class="kw">in</span> <span class="ident">start</span>..<span class="ident">stop</span> {
<span class="kw">let</span> <span class="ident">val</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">vals_reader</span>.<span class="ident">get</span>(<span class="ident">val_id</span>);
<span class="ident">vals</span>.<span class="ident">push</span>(<span class="ident">val</span>);
}
<span class="kw">let</span> <span class="ident">len</span> <span class="op">=</span> (<span class="ident">stop</span> <span class="op">-</span> <span class="ident">start</span>) <span class="kw">as</span> <span class="ident">usize</span>;
<span class="ident">vals</span>.<span class="ident">resize</span>(<span class="ident">len</span>, <span class="ident">Item</span>::<span class="ident">default</span>());
<span class="self">self</span>.<span class="ident">vals_reader</span>.<span class="ident">get_range</span>(<span class="ident">start</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">vals</span>[..]);
}
}

View File

@@ -54,93 +54,141 @@
</form>
</nav>
<section id='main' class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10">10</span>
<span id="11">11</span>
<span id="12">12</span>
<span id="13">13</span>
<span id="14">14</span>
<span id="15">15</span>
<span id="16">16</span>
<span id="17">17</span>
<span id="18">18</span>
<span id="19">19</span>
<span id="20">20</span>
<span id="21">21</span>
<span id="22">22</span>
<span id="23">23</span>
<span id="24">24</span>
<span id="25">25</span>
<span id="26">26</span>
<span id="27">27</span>
<span id="28">28</span>
<span id="29">29</span>
<span id="30">30</span>
<span id="31">31</span>
<span id="32">32</span>
<span id="33">33</span>
<span id="34">34</span>
<span id="35">35</span>
<span id="36">36</span>
<span id="37">37</span>
<span id="38">38</span>
<span id="39">39</span>
<span id="40">40</span>
<span id="41">41</span>
<span id="42">42</span>
<span id="43">43</span>
<span id="44">44</span>
<span id="45">45</span>
<span id="46">46</span>
<span id="47">47</span>
<span id="48">48</span>
<span id="49">49</span>
<span id="50">50</span>
<span id="51">51</span>
<span id="52">52</span>
<span id="53">53</span>
<span id="54">54</span>
<span id="55">55</span>
<span id="56">56</span>
<span id="57">57</span>
<span id="58">58</span>
<span id="59">59</span>
<span id="60">60</span>
<span id="61">61</span>
<span id="62">62</span>
<span id="63">63</span>
<span id="64">64</span>
<span id="65">65</span>
<span id="66">66</span>
<span id="67">67</span>
<section id='main' class="content"><pre class="line-numbers"><span id="1"> 1</span>
<span id="2"> 2</span>
<span id="3"> 3</span>
<span id="4"> 4</span>
<span id="5"> 5</span>
<span id="6"> 6</span>
<span id="7"> 7</span>
<span id="8"> 8</span>
<span id="9"> 9</span>
<span id="10"> 10</span>
<span id="11"> 11</span>
<span id="12"> 12</span>
<span id="13"> 13</span>
<span id="14"> 14</span>
<span id="15"> 15</span>
<span id="16"> 16</span>
<span id="17"> 17</span>
<span id="18"> 18</span>
<span id="19"> 19</span>
<span id="20"> 20</span>
<span id="21"> 21</span>
<span id="22"> 22</span>
<span id="23"> 23</span>
<span id="24"> 24</span>
<span id="25"> 25</span>
<span id="26"> 26</span>
<span id="27"> 27</span>
<span id="28"> 28</span>
<span id="29"> 29</span>
<span id="30"> 30</span>
<span id="31"> 31</span>
<span id="32"> 32</span>
<span id="33"> 33</span>
<span id="34"> 34</span>
<span id="35"> 35</span>
<span id="36"> 36</span>
<span id="37"> 37</span>
<span id="38"> 38</span>
<span id="39"> 39</span>
<span id="40"> 40</span>
<span id="41"> 41</span>
<span id="42"> 42</span>
<span id="43"> 43</span>
<span id="44"> 44</span>
<span id="45"> 45</span>
<span id="46"> 46</span>
<span id="47"> 47</span>
<span id="48"> 48</span>
<span id="49"> 49</span>
<span id="50"> 50</span>
<span id="51"> 51</span>
<span id="52"> 52</span>
<span id="53"> 53</span>
<span id="54"> 54</span>
<span id="55"> 55</span>
<span id="56"> 56</span>
<span id="57"> 57</span>
<span id="58"> 58</span>
<span id="59"> 59</span>
<span id="60"> 60</span>
<span id="61"> 61</span>
<span id="62"> 62</span>
<span id="63"> 63</span>
<span id="64"> 64</span>
<span id="65"> 65</span>
<span id="66"> 66</span>
<span id="67"> 67</span>
<span id="68"> 68</span>
<span id="69"> 69</span>
<span id="70"> 70</span>
<span id="71"> 71</span>
<span id="72"> 72</span>
<span id="73"> 73</span>
<span id="74"> 74</span>
<span id="75"> 75</span>
<span id="76"> 76</span>
<span id="77"> 77</span>
<span id="78"> 78</span>
<span id="79"> 79</span>
<span id="80"> 80</span>
<span id="81"> 81</span>
<span id="82"> 82</span>
<span id="83"> 83</span>
<span id="84"> 84</span>
<span id="85"> 85</span>
<span id="86"> 86</span>
<span id="87"> 87</span>
<span id="88"> 88</span>
<span id="89"> 89</span>
<span id="90"> 90</span>
<span id="91"> 91</span>
<span id="92"> 92</span>
<span id="93"> 93</span>
<span id="94"> 94</span>
<span id="95"> 95</span>
<span id="96"> 96</span>
<span id="97"> 97</span>
<span id="98"> 98</span>
<span id="99"> 99</span>
<span id="100">100</span>
<span id="101">101</span>
<span id="102">102</span>
<span id="103">103</span>
<span id="104">104</span>
<span id="105">105</span>
<span id="106">106</span>
<span id="107">107</span>
<span id="108">108</span>
<span id="109">109</span>
</pre><pre class="rust ">
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">FastFieldSerializer</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">serializer</span>::<span class="ident">FastSingleFieldSerializer</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">value_to_u64</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashMap</span>;
<span class="kw">use</span> <span class="ident">postings</span>::<span class="ident">UnorderedTermId</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Field</span>;
<span class="kw">use</span> <span class="ident">schema</span>::{<span class="ident">Document</span>, <span class="ident">Field</span>};
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">io</span>;
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MultiValueIntFastFieldWriter</span> {
<span class="ident">field</span>: <span class="ident">Field</span>,
<span class="ident">vals</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">UnorderedTermId</span><span class="op">&gt;</span>,
<span class="ident">vals</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>,
<span class="ident">doc_index</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>,
<span class="ident">is_facet</span>: <span class="ident">bool</span>
}
<span class="kw">impl</span> <span class="ident">MultiValueIntFastFieldWriter</span> {
<span class="doccomment">/// Creates a new `IntFastFieldWriter`</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">field</span>: <span class="ident">Field</span>) <span class="op">-&gt;</span> <span class="self">Self</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">field</span>: <span class="ident">Field</span>, <span class="ident">is_facet</span>: <span class="ident">bool</span>) <span class="op">-&gt;</span> <span class="self">Self</span> {
<span class="ident">MultiValueIntFastFieldWriter</span> {
<span class="ident">field</span>: <span class="ident">field</span>,
<span class="ident">field</span>,
<span class="ident">vals</span>: <span class="ident">Vec</span>::<span class="ident">new</span>(),
<span class="ident">doc_index</span>: <span class="ident">Vec</span>::<span class="ident">new</span>(),
<span class="ident">is_facet</span>
}
}
@@ -161,11 +209,32 @@
<span class="self">self</span>.<span class="ident">vals</span>.<span class="ident">push</span>(<span class="ident">val</span>);
}
<span class="doccomment">/// Push the fast fields value to the `FastFieldWriter`.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">add_document</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">doc</span>: <span class="kw-2">&amp;</span><span class="ident">Document</span>) {
<span class="kw">if</span> <span class="op">!</span><span class="self">self</span>.<span class="ident">is_facet</span> {
<span class="kw">for</span> <span class="ident">field_value</span> <span class="kw">in</span> <span class="ident">doc</span>.<span class="ident">field_values</span>() {
<span class="kw">if</span> <span class="ident">field_value</span>.<span class="ident">field</span>() <span class="op">==</span> <span class="self">self</span>.<span class="ident">field</span> {
<span class="self">self</span>.<span class="ident">add_val</span>(<span class="ident">value_to_u64</span>(<span class="ident">field_value</span>.<span class="ident">value</span>()));
}
}
}
}
<span class="doccomment">/// Serializes fast field values by pushing them to the `FastFieldSerializer`.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// HashMap makes it possible to remap them before serializing.</span>
<span class="doccomment">/// Specifically, string terms are first stored in the writer as their</span>
<span class="doccomment">/// position in the `IndexWriter`&#39;s `HashMap`. This value is called</span>
<span class="doccomment">/// an `UnorderedTermId`.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// During the serialization of the segment, terms gets sorted and</span>
<span class="doccomment">/// `tantivy` builds a mapping to convert this `UnorderedTermId` into</span>
<span class="doccomment">/// term ordinals.</span>
<span class="doccomment">///</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">serialize</span>(
<span class="kw-2">&amp;</span><span class="self">self</span>,
<span class="ident">serializer</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">FastFieldSerializer</span>,
<span class="ident">mapping</span>: <span class="kw-2">&amp;</span><span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">UnorderedTermId</span>, <span class="ident">usize</span><span class="op">&gt;</span>,
<span class="ident">mapping_opt</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="kw-2">&amp;</span><span class="ident">HashMap</span><span class="op">&lt;</span><span class="ident">UnorderedTermId</span>, <span class="ident">usize</span><span class="op">&gt;&gt;</span>,
) <span class="op">-&gt;</span> <span class="ident">io</span>::<span class="prelude-ty">Result</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
{
<span class="comment">// writing the offset index</span>
@@ -179,10 +248,25 @@
}
{
<span class="comment">// writing the values themselves.</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">value_serializer</span> <span class="op">=</span>
<span class="ident">serializer</span>.<span class="ident">new_u64_fast_field_with_idx</span>(<span class="self">self</span>.<span class="ident">field</span>, <span class="number">0u64</span>, <span class="ident">mapping</span>.<span class="ident">len</span>() <span class="kw">as</span> <span class="ident">u64</span>, <span class="number">1</span>)<span class="question-mark">?</span>;
<span class="kw">for</span> <span class="ident">val</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">vals</span> {
<span class="ident">value_serializer</span>.<span class="ident">add_val</span>(<span class="kw-2">*</span><span class="ident">mapping</span>.<span class="ident">get</span>(<span class="ident">val</span>).<span class="ident">expect</span>(<span class="string">&quot;Missing term ordinal&quot;</span>) <span class="kw">as</span> <span class="ident">u64</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">value_serializer</span>: <span class="ident">FastSingleFieldSerializer</span><span class="op">&lt;</span>_<span class="op">&gt;</span>;
<span class="kw">match</span> <span class="ident">mapping_opt</span> {
<span class="prelude-val">Some</span>(<span class="ident">mapping</span>) <span class="op">=&gt;</span> {
<span class="ident">value_serializer</span> <span class="op">=</span>
<span class="ident">serializer</span>.<span class="ident">new_u64_fast_field_with_idx</span>(<span class="self">self</span>.<span class="ident">field</span>, <span class="number">0u64</span>, <span class="ident">mapping</span>.<span class="ident">len</span>() <span class="kw">as</span> <span class="ident">u64</span>, <span class="number">1</span>)<span class="question-mark">?</span>;
<span class="kw">for</span> <span class="ident">val</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">vals</span> {
<span class="kw">let</span> <span class="ident">remapped_val</span> <span class="op">=</span> <span class="kw-2">*</span><span class="ident">mapping</span>.<span class="ident">get</span>(<span class="ident">val</span>).<span class="ident">expect</span>(<span class="string">&quot;Missing term ordinal&quot;</span>) <span class="kw">as</span> <span class="ident">u64</span>;
<span class="ident">value_serializer</span>.<span class="ident">add_val</span>(<span class="ident">remapped_val</span>)<span class="question-mark">?</span>;
}
}
<span class="prelude-val">None</span> <span class="op">=&gt;</span> {
<span class="kw">let</span> <span class="ident">val_min_max</span> <span class="op">=</span> <span class="self">self</span>.<span class="ident">vals</span>.<span class="ident">iter</span>().<span class="ident">cloned</span>().<span class="ident">minmax</span>();
<span class="kw">let</span> (<span class="ident">val_min</span>, <span class="ident">val_max</span>) <span class="op">=</span> <span class="ident">val_min_max</span>.<span class="ident">into_option</span>().<span class="ident">unwrap_or</span>((<span class="number">0u64</span>, <span class="number">0</span>));
<span class="ident">value_serializer</span> <span class="op">=</span>
<span class="ident">serializer</span>.<span class="ident">new_u64_fast_field_with_idx</span>(<span class="self">self</span>.<span class="ident">field</span>, <span class="ident">val_min</span>, <span class="ident">val_max</span>, <span class="number">1</span>)<span class="question-mark">?</span>;
<span class="kw">for</span> <span class="kw-2">&amp;</span><span class="ident">val</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">vals</span> {
<span class="ident">value_serializer</span>.<span class="ident">add_val</span>(<span class="ident">val</span>)<span class="question-mark">?</span>;
}
}
}
<span class="ident">value_serializer</span>.<span class="ident">close_field</span>()<span class="question-mark">?</span>;
}

View File

@@ -194,211 +194,40 @@
<span id="138">138</span>
<span id="139">139</span>
<span id="140">140</span>
<span id="141">141</span>
<span id="142">142</span>
<span id="143">143</span>
<span id="144">144</span>
<span id="145">145</span>
<span id="146">146</span>
<span id="147">147</span>
<span id="148">148</span>
<span id="149">149</span>
<span id="150">150</span>
<span id="151">151</span>
<span id="152">152</span>
<span id="153">153</span>
<span id="154">154</span>
<span id="155">155</span>
<span id="156">156</span>
<span id="157">157</span>
<span id="158">158</span>
<span id="159">159</span>
<span id="160">160</span>
<span id="161">161</span>
<span id="162">162</span>
<span id="163">163</span>
<span id="164">164</span>
<span id="165">165</span>
<span id="166">166</span>
<span id="167">167</span>
<span id="168">168</span>
<span id="169">169</span>
<span id="170">170</span>
<span id="171">171</span>
<span id="172">172</span>
<span id="173">173</span>
<span id="174">174</span>
<span id="175">175</span>
<span id="176">176</span>
<span id="177">177</span>
<span id="178">178</span>
<span id="179">179</span>
<span id="180">180</span>
<span id="181">181</span>
<span id="182">182</span>
<span id="183">183</span>
<span id="184">184</span>
<span id="185">185</span>
<span id="186">186</span>
<span id="187">187</span>
<span id="188">188</span>
<span id="189">189</span>
<span id="190">190</span>
<span id="191">191</span>
<span id="192">192</span>
<span id="193">193</span>
<span id="194">194</span>
<span id="195">195</span>
<span id="196">196</span>
<span id="197">197</span>
<span id="198">198</span>
<span id="199">199</span>
<span id="200">200</span>
<span id="201">201</span>
<span id="202">202</span>
<span id="203">203</span>
<span id="204">204</span>
<span id="205">205</span>
<span id="206">206</span>
<span id="207">207</span>
<span id="208">208</span>
<span id="209">209</span>
<span id="210">210</span>
<span id="211">211</span>
<span id="212">212</span>
<span id="213">213</span>
<span id="214">214</span>
<span id="215">215</span>
<span id="216">216</span>
<span id="217">217</span>
<span id="218">218</span>
<span id="219">219</span>
<span id="220">220</span>
<span id="221">221</span>
<span id="222">222</span>
<span id="223">223</span>
<span id="224">224</span>
<span id="225">225</span>
<span id="226">226</span>
<span id="227">227</span>
<span id="228">228</span>
<span id="229">229</span>
<span id="230">230</span>
<span id="231">231</span>
<span id="232">232</span>
<span id="233">233</span>
<span id="234">234</span>
<span id="235">235</span>
<span id="236">236</span>
</pre><pre class="rust ">
<span class="kw">use</span> <span class="ident">directory</span>::<span class="ident">ReadOnlySource</span>;
<span class="kw">use</span> <span class="ident">common</span>::{<span class="self">self</span>, <span class="ident">BinarySerializable</span>};
<span class="kw">use</span> <span class="ident">common</span>::<span class="ident">compute_num_bits</span>;
<span class="kw">use</span> <span class="ident">common</span>::<span class="ident">BinarySerializable</span>;
<span class="kw">use</span> <span class="ident">common</span>::<span class="ident">bitpacker</span>::<span class="ident">BitUnpacker</span>;
<span class="kw">use</span> <span class="ident">DocId</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">SchemaBuilder</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">path</span>::<span class="ident">Path</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">FAST</span>;
<span class="kw">use</span> <span class="ident">directory</span>::{<span class="ident">Directory</span>, <span class="ident">RAMDirectory</span>, <span class="ident">WritePtr</span>};
<span class="kw">use</span> <span class="ident">fastfield</span>::{<span class="ident">FastFieldSerializer</span>, <span class="ident">FastFieldsWriter</span>};
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">FieldType</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">mem</span>;
<span class="kw">use</span> <span class="ident">common</span>::<span class="ident">CompositeFile</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashMap</span>;
<span class="kw">use</span> <span class="ident">common</span>::<span class="ident">compute_num_bits</span>;
<span class="kw">use</span> <span class="ident">directory</span>::{<span class="ident">Directory</span>, <span class="ident">RAMDirectory</span>, <span class="ident">WritePtr</span>};
<span class="kw">use</span> <span class="ident">directory</span>::<span class="ident">ReadOnlySource</span>;
<span class="kw">use</span> <span class="ident">DocId</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::{<span class="ident">FastFieldSerializer</span>, <span class="ident">FastFieldsWriter</span>};
<span class="kw">use</span> <span class="ident">owning_ref</span>::<span class="ident">OwningRef</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">FAST</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">SchemaBuilder</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">collections</span>::<span class="ident">HashMap</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">marker</span>::<span class="ident">PhantomData</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">mem</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">path</span>::<span class="ident">Path</span>;
<span class="kw">use</span> <span class="kw">super</span>::<span class="ident">FastValue</span>;
<span class="doccomment">/// Trait for accessing a fastfield.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// Depending on the field type, a different</span>
<span class="doccomment">/// fast field is required.</span>
<span class="kw">pub</span> <span class="kw">trait</span> <span class="ident">FastFieldReader</span>: <span class="ident">Sized</span> {
<span class="doccomment">/// Type of the value stored in the fastfield.</span>
<span class="kw">type</span> <span class="ident">ValueType</span>;
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">&gt;</span> {
<span class="ident">bit_unpacker</span>: <span class="ident">BitUnpacker</span><span class="op">&lt;</span><span class="ident">OwningRef</span><span class="op">&lt;</span><span class="ident">ReadOnlySource</span>, [<span class="ident">u8</span>]<span class="op">&gt;&gt;</span>,
<span class="ident">min_value_u64</span>: <span class="ident">u64</span>,
<span class="ident">max_value_u64</span>: <span class="ident">u64</span>,
<span class="ident">_phantom</span>: <span class="ident">PhantomData</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;</span>
}
<span class="doccomment">/// Return the value associated to the given document.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// This accessor should return as fast as possible.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// # Panics</span>
<span class="doccomment">///</span>
<span class="doccomment">/// May panic if `doc` is greater than the segment</span>
<span class="comment">// `maxdoc`.</span>
<span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="ident">DocId</span>) <span class="op">-&gt;</span> <span class="self">Self</span>::<span class="ident">ValueType</span>;
<span class="doccomment">/// Fills an output buffer with the fast field values</span>
<span class="doccomment">/// associated with the `DocId` going from</span>
<span class="doccomment">/// `start` to `start + output.len()`.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// # Panics</span>
<span class="doccomment">///</span>
<span class="doccomment">/// May panic if `start + output.len()` is greater than</span>
<span class="doccomment">/// the segment&#39;s `maxdoc`.</span>
<span class="kw">fn</span> <span class="ident">get_range</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">start</span>: <span class="ident">u32</span>, <span class="ident">output</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> [<span class="self">Self</span>::<span class="ident">ValueType</span>]);
<span class="kw">impl</span><span class="op">&lt;</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">&gt;</span> <span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;</span> {
<span class="doccomment">/// Opens a fast field given a source.</span>
<span class="kw">fn</span> <span class="ident">open</span>(<span class="ident">source</span>: <span class="ident">ReadOnlySource</span>) <span class="op">-&gt;</span> <span class="self">Self</span>;
<span class="doccomment">/// Returns true iff the given field_type makes</span>
<span class="doccomment">/// it possible to access the field values via a</span>
<span class="doccomment">/// fastfield.</span>
<span class="kw">fn</span> <span class="ident">is_enabled</span>(<span class="ident">field_type</span>: <span class="kw-2">&amp;</span><span class="ident">FieldType</span>) <span class="op">-&gt;</span> <span class="ident">bool</span>;
}
<span class="doccomment">/// `FastFieldReader` for unsigned 64-bits integers.</span>
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>)]</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">U64FastFieldReader</span> {
<span class="ident">bit_unpacker</span>: <span class="ident">BitUnpacker</span><span class="op">&lt;</span><span class="ident">OwningRef</span><span class="op">&lt;</span><span class="ident">ReadOnlySource</span>, [<span class="ident">u8</span>]<span class="op">&gt;&gt;</span>,
<span class="ident">min_value</span>: <span class="ident">u64</span>,
<span class="ident">max_value</span>: <span class="ident">u64</span>,
}
<span class="kw">impl</span> <span class="ident">U64FastFieldReader</span> {
<span class="doccomment">/// Returns the minimum value for this fast field.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// The min value does not take in account of possible</span>
<span class="doccomment">/// deleted document, and should be considered as a lower bound</span>
<span class="doccomment">/// of the actual minimum value.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">min_value</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">u64</span> {
<span class="self">self</span>.<span class="ident">min_value</span>
}
<span class="doccomment">/// Returns the maximum value for this fast field.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// The max value does not take in account of possible</span>
<span class="doccomment">/// deleted document, and should be considered as an upper bound</span>
<span class="doccomment">/// of the actual maximum value.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">max_value</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">u64</span> {
<span class="self">self</span>.<span class="ident">max_value</span>
}
}
<span class="kw">impl</span> <span class="ident">FastFieldReader</span> <span class="kw">for</span> <span class="ident">U64FastFieldReader</span> {
<span class="kw">type</span> <span class="ident">ValueType</span> <span class="op">=</span> <span class="ident">u64</span>;
<span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="ident">DocId</span>) <span class="op">-&gt;</span> <span class="ident">u64</span> {
<span class="self">self</span>.<span class="ident">min_value</span> <span class="op">+</span> <span class="self">self</span>.<span class="ident">bit_unpacker</span>.<span class="ident">get</span>(<span class="ident">doc</span> <span class="kw">as</span> <span class="ident">usize</span>)
}
<span class="kw">fn</span> <span class="ident">is_enabled</span>(<span class="ident">field_type</span>: <span class="kw-2">&amp;</span><span class="ident">FieldType</span>) <span class="op">-&gt;</span> <span class="ident">bool</span> {
<span class="kw">match</span> <span class="kw-2">*</span><span class="ident">field_type</span> {
<span class="ident">FieldType</span>::<span class="ident">U64</span>(<span class="kw-2">ref</span> <span class="ident">integer_options</span>) <span class="op">=&gt;</span> <span class="ident">integer_options</span>.<span class="ident">is_fast</span>(),
<span class="ident">FieldType</span>::<span class="ident">HierarchicalFacet</span> <span class="op">=&gt;</span> <span class="bool-val">true</span>,
_ <span class="op">=&gt;</span> <span class="bool-val">false</span>,
}
}
<span class="kw">fn</span> <span class="ident">get_range</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">start</span>: <span class="ident">u32</span>, <span class="ident">output</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> [<span class="self">Self</span>::<span class="ident">ValueType</span>]) {
<span class="self">self</span>.<span class="ident">bit_unpacker</span>.<span class="ident">get_range</span>(<span class="ident">start</span>, <span class="ident">output</span>);
<span class="kw">for</span> <span class="ident">out</span> <span class="kw">in</span> <span class="ident">output</span>.<span class="ident">iter_mut</span>() {
<span class="kw-2">*</span><span class="ident">out</span> <span class="op">+=</span> <span class="self">self</span>.<span class="ident">min_value</span>;
}
}
<span class="doccomment">/// Opens a new fast field reader given a read only source.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// # Panics</span>
<span class="doccomment">/// Panics if the data is corrupted.</span>
<span class="kw">fn</span> <span class="ident">open</span>(<span class="ident">data</span>: <span class="ident">ReadOnlySource</span>) <span class="op">-&gt;</span> <span class="ident">U64FastFieldReader</span> {
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">open</span>(<span class="ident">data</span>: <span class="ident">ReadOnlySource</span>) <span class="op">-&gt;</span> <span class="self">Self</span> {
<span class="kw">let</span> <span class="ident">min_value</span>: <span class="ident">u64</span>;
<span class="kw">let</span> <span class="ident">amplitude</span>: <span class="ident">u64</span>;
{
@@ -412,16 +241,64 @@
<span class="kw">let</span> <span class="ident">num_bits</span> <span class="op">=</span> <span class="ident">compute_num_bits</span>(<span class="ident">amplitude</span>);
<span class="kw">let</span> <span class="ident">owning_ref</span> <span class="op">=</span> <span class="ident">OwningRef</span>::<span class="ident">new</span>(<span class="ident">data</span>).<span class="ident">map</span>(<span class="op">|</span><span class="ident">data</span><span class="op">|</span> <span class="kw-2">&amp;</span><span class="ident">data</span>[<span class="number">16</span>..]);
<span class="kw">let</span> <span class="ident">bit_unpacker</span> <span class="op">=</span> <span class="ident">BitUnpacker</span>::<span class="ident">new</span>(<span class="ident">owning_ref</span>, <span class="ident">num_bits</span>);
<span class="ident">U64FastFieldReader</span> {
<span class="ident">min_value</span>,
<span class="ident">max_value</span>,
<span class="ident">FastFieldReader</span> {
<span class="ident">min_value_u64</span>: <span class="ident">min_value</span>,
<span class="ident">max_value_u64</span>: <span class="ident">max_value</span>,
<span class="ident">bit_unpacker</span>,
<span class="ident">_phantom</span>: <span class="ident">PhantomData</span>
}
}
<span class="doccomment">/// Return the value associated to the given document.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// This accessor should return as fast as possible.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// # Panics</span>
<span class="doccomment">///</span>
<span class="doccomment">/// May panic if `doc` is greater than the segment</span>
<span class="comment">// `maxdoc`.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="ident">DocId</span>) <span class="op">-&gt;</span> <span class="ident">Item</span> {
<span class="ident">Item</span>::<span class="ident">from_u64</span>(<span class="self">self</span>.<span class="ident">min_value_u64</span> <span class="op">+</span> <span class="self">self</span>.<span class="ident">bit_unpacker</span>.<span class="ident">get</span>(<span class="ident">doc</span> <span class="kw">as</span> <span class="ident">usize</span>))
}
<span class="doccomment">/// Fills an output buffer with the fast field values</span>
<span class="doccomment">/// associated with the `DocId` going from</span>
<span class="doccomment">/// `start` to `start + output.len()`.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// # Panics</span>
<span class="doccomment">///</span>
<span class="doccomment">/// May panic if `start + output.len()` is greater than</span>
<span class="doccomment">/// the segment&#39;s `maxdoc`.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_range</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">start</span>: <span class="ident">u32</span>, <span class="ident">output</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> [<span class="ident">Item</span>]) {
<span class="kw">let</span> <span class="ident">output_u64</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> [<span class="ident">u64</span>] <span class="op">=</span> <span class="kw">unsafe</span> { <span class="ident">mem</span>::<span class="ident">transmute</span>(<span class="ident">output</span>) };
<span class="self">self</span>.<span class="ident">bit_unpacker</span>.<span class="ident">get_range</span>(<span class="ident">start</span>, <span class="ident">output_u64</span>);
<span class="kw">for</span> <span class="ident">out</span> <span class="kw">in</span> <span class="ident">output_u64</span>.<span class="ident">iter_mut</span>() {
<span class="kw-2">*</span><span class="ident">out</span> <span class="op">=</span> <span class="ident">Item</span>::<span class="ident">from_u64</span>(<span class="kw-2">*</span><span class="ident">out</span> <span class="op">+</span> <span class="self">self</span>.<span class="ident">min_value_u64</span>).<span class="ident">as_u64</span>();
}
}
<span class="doccomment">/// Returns the minimum value for this fast field.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// The max value does not take in account of possible</span>
<span class="doccomment">/// deleted document, and should be considered as an upper bound</span>
<span class="doccomment">/// of the actual maximum value.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">min_value</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">Item</span> {
<span class="ident">Item</span>::<span class="ident">from_u64</span>(<span class="self">self</span>.<span class="ident">min_value_u64</span>)
}
<span class="doccomment">/// Returns the maximum value for this fast field.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// The max value does not take in account of possible</span>
<span class="doccomment">/// deleted document, and should be considered as an upper bound</span>
<span class="doccomment">/// of the actual maximum value.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">max_value</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">Item</span> {
<span class="ident">Item</span>::<span class="ident">from_u64</span>(<span class="self">self</span>.<span class="ident">max_value_u64</span>)
}
}
<span class="kw">impl</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;&gt;</span> <span class="kw">for</span> <span class="ident">U64FastFieldReader</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">vals</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>) <span class="op">-&gt;</span> <span class="ident">U64FastFieldReader</span> {
<span class="kw">impl</span><span class="op">&lt;</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">&gt;</span> <span class="ident">From</span><span class="op">&lt;</span><span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;&gt;</span> <span class="kw">for</span> <span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;</span> {
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">vals</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;</span>) <span class="op">-&gt;</span> <span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">Item</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">schema_builder</span> <span class="op">=</span> <span class="ident">SchemaBuilder</span>::<span class="ident">default</span>();
<span class="kw">let</span> <span class="ident">field</span> <span class="op">=</span> <span class="ident">schema_builder</span>.<span class="ident">add_u64_field</span>(<span class="string">&quot;field&quot;</span>, <span class="ident">FAST</span>);
<span class="kw">let</span> <span class="ident">schema</span> <span class="op">=</span> <span class="ident">schema_builder</span>.<span class="ident">build</span>();
@@ -439,7 +316,7 @@
.<span class="ident">get_field_writer</span>(<span class="ident">field</span>)
.<span class="ident">expect</span>(<span class="string">&quot;With a RAMDirectory, this should never fail.&quot;</span>);
<span class="kw">for</span> <span class="ident">val</span> <span class="kw">in</span> <span class="ident">vals</span> {
<span class="ident">fast_field_writer</span>.<span class="ident">add_val</span>(<span class="ident">val</span>);
<span class="ident">fast_field_writer</span>.<span class="ident">add_val</span>(<span class="ident">val</span>.<span class="ident">to_u64</span>());
}
}
<span class="ident">fast_field_writers</span>
@@ -451,82 +328,13 @@
<span class="kw">let</span> <span class="ident">source</span> <span class="op">=</span> <span class="ident">directory</span>.<span class="ident">open_read</span>(<span class="ident">path</span>).<span class="ident">expect</span>(<span class="string">&quot;Failed to open the file&quot;</span>);
<span class="kw">let</span> <span class="ident">composite_file</span> <span class="op">=</span>
<span class="ident">CompositeFile</span>::<span class="ident">open</span>(<span class="kw-2">&amp;</span><span class="ident">source</span>).<span class="ident">expect</span>(<span class="string">&quot;Failed to read the composite file&quot;</span>);
<span class="kw">let</span> <span class="ident">field_source</span> <span class="op">=</span> <span class="ident">composite_file</span>
.<span class="ident">open_read</span>(<span class="ident">field</span>)
.<span class="ident">expect</span>(<span class="string">&quot;File component not found&quot;</span>);
<span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">field_source</span>)
<span class="ident">FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">field_source</span>)
}
}
<span class="doccomment">/// `FastFieldReader` for signed 64-bits integers.</span>
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">I64FastFieldReader</span> {
<span class="ident">underlying</span>: <span class="ident">U64FastFieldReader</span>,
}
<span class="kw">impl</span> <span class="ident">I64FastFieldReader</span> {
<span class="doccomment">/// Returns the minimum value for this fast field.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// The min value does not take in account of possible</span>
<span class="doccomment">/// deleted document, and should be considered as a lower bound</span>
<span class="doccomment">/// of the actual minimum value.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">min_value</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">i64</span> {
<span class="ident">common</span>::<span class="ident">u64_to_i64</span>(<span class="self">self</span>.<span class="ident">underlying</span>.<span class="ident">min_value</span>())
}
<span class="doccomment">/// Returns the maximum value for this fast field.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// The max value does not take in account of possible</span>
<span class="doccomment">/// deleted document, and should be considered as an upper bound</span>
<span class="doccomment">/// of the actual maximum value.</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">max_value</span>(<span class="kw-2">&amp;</span><span class="self">self</span>) <span class="op">-&gt;</span> <span class="ident">i64</span> {
<span class="ident">common</span>::<span class="ident">u64_to_i64</span>(<span class="self">self</span>.<span class="ident">underlying</span>.<span class="ident">max_value</span>())
}
}
<span class="kw">impl</span> <span class="ident">FastFieldReader</span> <span class="kw">for</span> <span class="ident">I64FastFieldReader</span> {
<span class="kw">type</span> <span class="ident">ValueType</span> <span class="op">=</span> <span class="ident">i64</span>;
<span class="doccomment">///</span>
<span class="doccomment">///</span>
<span class="doccomment">/// # Panics</span>
<span class="doccomment">///</span>
<span class="doccomment">/// May panic or return wrong random result if `doc`</span>
<span class="doccomment">/// is greater or equal to the segment&#39;s `maxdoc`.</span>
<span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="ident">DocId</span>) <span class="op">-&gt;</span> <span class="ident">i64</span> {
<span class="ident">common</span>::<span class="ident">u64_to_i64</span>(<span class="self">self</span>.<span class="ident">underlying</span>.<span class="ident">get</span>(<span class="ident">doc</span>))
}
<span class="doccomment">///</span>
<span class="doccomment">/// # Panics</span>
<span class="doccomment">///</span>
<span class="doccomment">/// May panic or return wrong random result if `doc`</span>
<span class="doccomment">/// is greater or equal to the segment&#39;s `maxdoc`.</span>
<span class="kw">fn</span> <span class="ident">get_range</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">start</span>: <span class="ident">u32</span>, <span class="ident">output</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> [<span class="self">Self</span>::<span class="ident">ValueType</span>]) {
<span class="kw">let</span> <span class="ident">output_u64</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> [<span class="ident">u64</span>] <span class="op">=</span> <span class="kw">unsafe</span> { <span class="ident">mem</span>::<span class="ident">transmute</span>(<span class="ident">output</span>) };
<span class="self">self</span>.<span class="ident">underlying</span>.<span class="ident">get_range</span>(<span class="ident">start</span>, <span class="ident">output_u64</span>);
<span class="kw">for</span> <span class="ident">mut_val</span> <span class="kw">in</span> <span class="ident">output_u64</span>.<span class="ident">iter_mut</span>() {
<span class="kw-2">*</span><span class="ident">mut_val</span> <span class="op">=</span> <span class="ident">common</span>::<span class="ident">u64_to_i64</span>(<span class="kw-2">*</span><span class="ident">mut_val</span> <span class="kw">as</span> <span class="ident">u64</span>) <span class="kw">as</span> <span class="ident">u64</span>;
}
}
<span class="doccomment">/// Opens a new fast field reader given a read only source.</span>
<span class="doccomment">///</span>
<span class="doccomment">/// # Panics</span>
<span class="doccomment">/// Panics if the data is corrupted.</span>
<span class="kw">fn</span> <span class="ident">open</span>(<span class="ident">data</span>: <span class="ident">ReadOnlySource</span>) <span class="op">-&gt;</span> <span class="ident">I64FastFieldReader</span> {
<span class="ident">I64FastFieldReader</span> {
<span class="ident">underlying</span>: <span class="ident">U64FastFieldReader</span>::<span class="ident">open</span>(<span class="ident">data</span>),
}
}
<span class="kw">fn</span> <span class="ident">is_enabled</span>(<span class="ident">field_type</span>: <span class="kw-2">&amp;</span><span class="ident">FieldType</span>) <span class="op">-&gt;</span> <span class="ident">bool</span> {
<span class="kw">match</span> <span class="kw-2">*</span><span class="ident">field_type</span> {
<span class="ident">FieldType</span>::<span class="ident">I64</span>(<span class="kw-2">ref</span> <span class="ident">integer_options</span>) <span class="op">=&gt;</span> <span class="ident">integer_options</span>.<span class="ident">is_fast</span>(),
_ <span class="op">=&gt;</span> <span class="bool-val">false</span>,
}
}
}
</pre>
</section>
<section id='search' class="content hidden"></section>

View File

@@ -205,7 +205,7 @@
<span class="comment">// just making room for the pointer to header.</span>
<span class="kw">let</span> <span class="ident">composite_write</span> <span class="op">=</span> <span class="ident">CompositeWrite</span>::<span class="ident">wrap</span>(<span class="ident">write</span>);
<span class="prelude-val">Ok</span>(<span class="ident">FastFieldSerializer</span> {
<span class="ident">composite_write</span>: <span class="ident">composite_write</span>,
<span class="ident">composite_write</span>
})
}

View File

@@ -309,19 +309,10 @@
<span id="253">253</span>
<span id="254">254</span>
<span id="255">255</span>
<span id="256">256</span>
<span id="257">257</span>
<span id="258">258</span>
<span id="259">259</span>
<span id="260">260</span>
<span id="261">261</span>
<span id="262">262</span>
<span id="263">263</span>
</pre><pre class="rust ">
<span class="kw">use</span> <span class="ident">schema</span>::{<span class="ident">Cardinality</span>, <span class="ident">Document</span>, <span class="ident">Field</span>, <span class="ident">Schema</span>};
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">FastFieldSerializer</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">io</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Value</span>;
<span class="kw">use</span> <span class="ident">DocId</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">FieldType</span>;
<span class="kw">use</span> <span class="ident">common</span>;
@@ -359,22 +350,22 @@
<span class="ident">single_value_writers</span>.<span class="ident">push</span>(<span class="ident">fast_field_writer</span>);
}
<span class="prelude-val">Some</span>(<span class="ident">Cardinality</span>::<span class="ident">MultiValues</span>) <span class="op">=&gt;</span> {
<span class="kw">let</span> <span class="ident">fast_field_writer</span> <span class="op">=</span> <span class="ident">MultiValueIntFastFieldWriter</span>::<span class="ident">new</span>(<span class="ident">field</span>);
<span class="kw">let</span> <span class="ident">fast_field_writer</span> <span class="op">=</span> <span class="ident">MultiValueIntFastFieldWriter</span>::<span class="ident">new</span>(<span class="ident">field</span>, <span class="bool-val">false</span>);
<span class="ident">multi_values_writers</span>.<span class="ident">push</span>(<span class="ident">fast_field_writer</span>);
}
<span class="prelude-val">None</span> <span class="op">=&gt;</span> {}
}
}
<span class="ident">FieldType</span>::<span class="ident">HierarchicalFacet</span> <span class="op">=&gt;</span> {
<span class="kw">let</span> <span class="ident">fast_field_writer</span> <span class="op">=</span> <span class="ident">MultiValueIntFastFieldWriter</span>::<span class="ident">new</span>(<span class="ident">field</span>);
<span class="kw">let</span> <span class="ident">fast_field_writer</span> <span class="op">=</span> <span class="ident">MultiValueIntFastFieldWriter</span>::<span class="ident">new</span>(<span class="ident">field</span>, <span class="bool-val">true</span>);
<span class="ident">multi_values_writers</span>.<span class="ident">push</span>(<span class="ident">fast_field_writer</span>);
}
_ <span class="op">=&gt;</span> {}
}
}
<span class="ident">FastFieldsWriter</span> {
<span class="ident">single_value_writers</span>: <span class="ident">single_value_writers</span>,
<span class="ident">multi_values_writers</span>: <span class="ident">multi_values_writers</span>,
<span class="ident">single_value_writers</span>,
<span class="ident">multi_values_writers</span>
}
}
@@ -417,6 +408,7 @@
}
<span class="kw">for</span> <span class="ident">field_writer</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="self">self</span>.<span class="ident">multi_values_writers</span> {
<span class="ident">field_writer</span>.<span class="ident">next_doc</span>();
<span class="ident">field_writer</span>.<span class="ident">add_document</span>(<span class="ident">doc</span>);
}
}
@@ -432,11 +424,7 @@
}
<span class="kw">for</span> <span class="ident">field_writer</span> <span class="kw">in</span> <span class="kw-2">&amp;</span><span class="self">self</span>.<span class="ident">multi_values_writers</span> {
<span class="kw">let</span> <span class="ident">field</span> <span class="op">=</span> <span class="ident">field_writer</span>.<span class="ident">field</span>();
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">mapping</span>) <span class="op">=</span> <span class="ident">mapping</span>.<span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="ident">field</span>) {
<span class="ident">field_writer</span>.<span class="ident">serialize</span>(<span class="ident">serializer</span>, <span class="ident">mapping</span>)<span class="question-mark">?</span>;
} <span class="kw">else</span> {
<span class="macro">panic</span><span class="macro">!</span>(<span class="string">&quot;Term ordinal mapping missing for {:?}&quot;</span>, <span class="ident">field</span>);
}
<span class="ident">field_writer</span>.<span class="ident">serialize</span>(<span class="ident">serializer</span>, <span class="ident">mapping</span>.<span class="ident">get</span>(<span class="kw-2">&amp;</span><span class="ident">field</span>))<span class="question-mark">?</span>;
}
<span class="prelude-val">Ok</span>(())
}
@@ -480,7 +468,7 @@
<span class="doccomment">/// Creates a new `IntFastFieldWriter`</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">new</span>(<span class="ident">field</span>: <span class="ident">Field</span>) <span class="op">-&gt;</span> <span class="ident">IntFastFieldWriter</span> {
<span class="ident">IntFastFieldWriter</span> {
<span class="ident">field</span>: <span class="ident">field</span>,
<span class="ident">field</span>,
<span class="ident">vals</span>: <span class="ident">Vec</span>::<span class="ident">new</span>(),
<span class="ident">val_count</span>: <span class="number">0</span>,
<span class="ident">val_if_missing</span>: <span class="number">0u64</span>,
@@ -547,11 +535,7 @@
<span class="doccomment">/// only the first one is taken in account.</span>
<span class="kw">fn</span> <span class="ident">extract_val</span>(<span class="kw-2">&amp;</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="kw-2">&amp;</span><span class="ident">Document</span>) <span class="op">-&gt;</span> <span class="ident">u64</span> {
<span class="kw">match</span> <span class="ident">doc</span>.<span class="ident">get_first</span>(<span class="self">self</span>.<span class="ident">field</span>) {
<span class="prelude-val">Some</span>(<span class="ident">v</span>) <span class="op">=&gt;</span> <span class="kw">match</span> <span class="kw-2">*</span><span class="ident">v</span> {
<span class="ident">Value</span>::<span class="ident">U64</span>(<span class="kw-2">ref</span> <span class="ident">val</span>) <span class="op">=&gt;</span> <span class="kw-2">*</span><span class="ident">val</span>,
<span class="ident">Value</span>::<span class="ident">I64</span>(<span class="kw-2">ref</span> <span class="ident">val</span>) <span class="op">=&gt;</span> <span class="ident">common</span>::<span class="ident">i64_to_u64</span>(<span class="kw-2">*</span><span class="ident">val</span>),
_ <span class="op">=&gt;</span> <span class="macro">panic</span><span class="macro">!</span>(<span class="string">&quot;Expected a u64field, got {:?} &quot;</span>, <span class="ident">v</span>),
},
<span class="prelude-val">Some</span>(<span class="ident">v</span>) <span class="op">=&gt;</span> <span class="kw">super</span>::<span class="ident">value_to_u64</span>(<span class="ident">v</span>),
<span class="prelude-val">None</span> <span class="op">=&gt;</span> <span class="self">self</span>.<span class="ident">val_if_missing</span>,
}
}

View File

@@ -862,8 +862,6 @@
<span id="806">806</span>
<span id="807">807</span>
<span id="808">808</span>
<span id="809">809</span>
<span id="810">810</span>
</pre><pre class="rust ">
<span class="kw">use</span> <span class="ident">error</span>::{<span class="ident">ErrorKind</span>, <span class="prelude-ty">Result</span>};
<span class="kw">use</span> <span class="ident">core</span>::<span class="ident">SegmentReader</span>;
@@ -872,7 +870,6 @@
<span class="kw">use</span> <span class="ident">core</span>::<span class="ident">SerializableSegment</span>;
<span class="kw">use</span> <span class="ident">indexer</span>::<span class="ident">SegmentSerializer</span>;
<span class="kw">use</span> <span class="ident">postings</span>::<span class="ident">InvertedIndexSerializer</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">U64FastFieldReader</span>;
<span class="kw">use</span> <span class="ident">itertools</span>::<span class="ident">Itertools</span>;
<span class="kw">use</span> <span class="ident">postings</span>::<span class="ident">Postings</span>;
<span class="kw">use</span> <span class="ident">docset</span>::<span class="ident">DocSet</span>;
@@ -893,7 +890,7 @@
}
<span class="kw">fn</span> <span class="ident">compute_min_max_val</span>(
<span class="ident">u64_reader</span>: <span class="kw-2">&amp;</span><span class="ident">U64FastFieldReader</span>,
<span class="ident">u64_reader</span>: <span class="kw-2">&amp;</span><span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>,
<span class="ident">max_doc</span>: <span class="ident">DocId</span>,
<span class="ident">delete_bitset</span>: <span class="kw-2">&amp;</span><span class="ident">DeleteBitSet</span>,
) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span>(<span class="ident">u64</span>, <span class="ident">u64</span>)<span class="op">&gt;</span> {
@@ -917,15 +914,15 @@
<span class="kw">fn</span> <span class="ident">extract_fieldnorm_reader</span>(
<span class="ident">segment_reader</span>: <span class="kw-2">&amp;</span><span class="ident">SegmentReader</span>,
<span class="ident">field</span>: <span class="ident">Field</span>,
) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">U64FastFieldReader</span><span class="op">&gt;</span> {
) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;&gt;</span> {
<span class="ident">segment_reader</span>.<span class="ident">get_fieldnorms_reader</span>(<span class="ident">field</span>)
}
<span class="kw">fn</span> <span class="ident">extract_fast_field_reader</span>(
<span class="ident">segment_reader</span>: <span class="kw-2">&amp;</span><span class="ident">SegmentReader</span>,
<span class="ident">field</span>: <span class="ident">Field</span>,
) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">U64FastFieldReader</span><span class="op">&gt;</span> {
<span class="ident">segment_reader</span>.<span class="ident">get_fast_field_reader</span>(<span class="ident">field</span>).<span class="ident">ok</span>()
) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;&gt;</span> {
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>(<span class="ident">field</span>).<span class="ident">ok</span>()
}
<span class="kw">struct</span> <span class="ident">DeltaComputer</span> {
@@ -1004,7 +1001,7 @@
<span class="kw">fn</span> <span class="ident">generic_write_fast_field</span>(
<span class="kw-2">&amp;</span><span class="self">self</span>,
<span class="ident">fields</span>: <span class="ident">Vec</span><span class="op">&lt;</span><span class="ident">Field</span><span class="op">&gt;</span>,
<span class="ident">field_reader_extractor</span>: <span class="kw-2">&amp;</span><span class="ident">Fn</span>(<span class="kw-2">&amp;</span><span class="ident">SegmentReader</span>, <span class="ident">Field</span>) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">U64FastFieldReader</span><span class="op">&gt;</span>,
<span class="ident">field_reader_extractor</span>: <span class="kw-2">&amp;</span><span class="ident">Fn</span>(<span class="kw-2">&amp;</span><span class="ident">SegmentReader</span>, <span class="ident">Field</span>) <span class="op">-&gt;</span> <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;&gt;</span>,
<span class="ident">fast_field_serializer</span>: <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">FastFieldSerializer</span>,
) <span class="op">-&gt;</span> <span class="prelude-ty">Result</span><span class="op">&lt;</span>()<span class="op">&gt;</span> {
<span class="kw">for</span> <span class="ident">field</span> <span class="kw">in</span> <span class="ident">fields</span> {
@@ -1235,7 +1232,6 @@
<span class="kw">use</span> <span class="ident">query</span>::<span class="ident">TermQuery</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Field</span>;
<span class="kw">use</span> <span class="ident">core</span>::<span class="ident">Index</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">U64FastFieldReader</span>;
<span class="kw">use</span> <span class="ident">Searcher</span>;
<span class="kw">use</span> <span class="ident">DocAddress</span>;
<span class="kw">use</span> <span class="ident">collector</span>::<span class="ident">tests</span>::<span class="ident">FastFieldTestCollector</span>;
@@ -1495,16 +1491,16 @@
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">6_000</span>, <span class="number">7_000</span>]
);
<span class="kw">let</span> <span class="ident">score_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span> <span class="ident">searcher</span>
<span class="kw">let</span> <span class="ident">score_field_reader</span> <span class="op">=</span> <span class="ident">searcher</span>
.<span class="ident">segment_reader</span>(<span class="number">0</span>)
.<span class="ident">get_fast_field_reader</span>(<span class="ident">score_field</span>)
.<span class="ident">fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>(<span class="ident">score_field</span>)
.<span class="ident">unwrap</span>();
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">score_field_reader</span>.<span class="ident">min_value</span>(), <span class="number">1</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">score_field_reader</span>.<span class="ident">max_value</span>(), <span class="number">3</span>);
<span class="kw">let</span> <span class="ident">score_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span> <span class="ident">searcher</span>
<span class="kw">let</span> <span class="ident">score_field_reader</span> <span class="op">=</span> <span class="ident">searcher</span>
.<span class="ident">segment_reader</span>(<span class="number">1</span>)
.<span class="ident">get_fast_field_reader</span>(<span class="ident">score_field</span>)
.<span class="ident">fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>(<span class="ident">score_field</span>)
.<span class="ident">unwrap</span>();
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">score_field_reader</span>.<span class="ident">min_value</span>(), <span class="number">4000</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">score_field_reader</span>.<span class="ident">max_value</span>(), <span class="number">7000</span>);
@@ -1552,9 +1548,9 @@
<span class="ident">search_term</span>(<span class="kw-2">&amp;</span><span class="ident">searcher</span>, <span class="ident">Term</span>::<span class="ident">from_field_text</span>(<span class="ident">text_field</span>, <span class="string">&quot;g&quot;</span>)),
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">6_000</span>, <span class="number">7_000</span>]
);
<span class="kw">let</span> <span class="ident">score_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span> <span class="ident">searcher</span>
<span class="kw">let</span> <span class="ident">score_field_reader</span> <span class="op">=</span> <span class="ident">searcher</span>
.<span class="ident">segment_reader</span>(<span class="number">0</span>)
.<span class="ident">get_fast_field_reader</span>(<span class="ident">score_field</span>)
.<span class="ident">fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>(<span class="ident">score_field</span>)
.<span class="ident">unwrap</span>();
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">score_field_reader</span>.<span class="ident">min_value</span>(), <span class="number">3</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">score_field_reader</span>.<span class="ident">max_value</span>(), <span class="number">7000</span>);
@@ -1598,9 +1594,9 @@
<span class="ident">search_term</span>(<span class="kw-2">&amp;</span><span class="ident">searcher</span>, <span class="ident">Term</span>::<span class="ident">from_field_text</span>(<span class="ident">text_field</span>, <span class="string">&quot;g&quot;</span>)),
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">6_000</span>, <span class="number">7_000</span>]
);
<span class="kw">let</span> <span class="ident">score_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span> <span class="ident">searcher</span>
<span class="kw">let</span> <span class="ident">score_field_reader</span> <span class="op">=</span> <span class="ident">searcher</span>
.<span class="ident">segment_reader</span>(<span class="number">0</span>)
.<span class="ident">get_fast_field_reader</span>(<span class="ident">score_field</span>)
.<span class="ident">fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>(<span class="ident">score_field</span>)
.<span class="ident">unwrap</span>();
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">score_field_reader</span>.<span class="ident">min_value</span>(), <span class="number">3</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">score_field_reader</span>.<span class="ident">max_value</span>(), <span class="number">7000</span>);
@@ -1649,9 +1645,9 @@
<span class="ident">search_term</span>(<span class="kw-2">&amp;</span><span class="ident">searcher</span>, <span class="ident">Term</span>::<span class="ident">from_field_text</span>(<span class="ident">text_field</span>, <span class="string">&quot;g&quot;</span>)),
<span class="macro">vec</span><span class="macro">!</span>[<span class="number">6_000</span>, <span class="number">7_000</span>]
);
<span class="kw">let</span> <span class="ident">score_field_reader</span>: <span class="ident">U64FastFieldReader</span> <span class="op">=</span> <span class="ident">searcher</span>
<span class="kw">let</span> <span class="ident">score_field_reader</span> <span class="op">=</span> <span class="ident">searcher</span>
.<span class="ident">segment_reader</span>(<span class="number">0</span>)
.<span class="ident">get_fast_field_reader</span>(<span class="ident">score_field</span>)
.<span class="ident">fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>(<span class="ident">score_field</span>)
.<span class="ident">unwrap</span>();
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">score_field_reader</span>.<span class="ident">min_value</span>(), <span class="number">6000</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">score_field_reader</span>.<span class="ident">max_value</span>(), <span class="number">7000</span>);

View File

@@ -331,7 +331,6 @@
<span id="275">275</span>
<span id="276">276</span>
<span id="277">277</span>
<span id="278">278</span>
</pre><pre class="rust ">
<span class="kw">use</span> <span class="prelude-ty">Result</span>;
<span class="kw">use</span> <span class="ident">DocId</span>;
@@ -495,7 +494,6 @@
<span class="self">self</span>.<span class="ident">multifield_postings</span>.<span class="ident">subscribe</span>(<span class="ident">doc_id</span>, <span class="kw-2">&amp;</span><span class="ident">term</span>);
<span class="ident">unordered_term_id_opt</span> <span class="op">=</span> <span class="prelude-val">Some</span>(<span class="ident">unordered_term_id</span>);
});
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Some</span>(<span class="ident">unordered_term_id</span>) <span class="op">=</span> <span class="ident">unordered_term_id_opt</span> {
<span class="self">self</span>.<span class="ident">fast_field_writers</span>
.<span class="ident">get_multivalue_writer</span>(<span class="ident">field</span>)

View File

@@ -942,7 +942,6 @@
<span id="886">886</span>
<span id="887">887</span>
<span id="888">888</span>
<span id="889">889</span>
</pre><pre class="rust ">
<span class="attribute">#![<span class="ident">doc</span>(<span class="ident">html_logo_url</span> <span class="op">=</span> <span class="string">&quot;http://fulmicoton.com/tantivy-logo/tantivy-logo.png&quot;</span>)]</span>
<span class="attribute">#![<span class="ident">cfg_attr</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">&quot;cargo-clippy&quot;</span>, <span class="ident">allow</span>(<span class="ident">module_inception</span>))]</span>
@@ -1232,7 +1231,6 @@
<span class="kw">use</span> <span class="ident">schema</span>::<span class="kw-2">*</span>;
<span class="kw">use</span> <span class="ident">docset</span>::<span class="ident">DocSet</span>;
<span class="kw">use</span> <span class="ident">IndexWriter</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::{<span class="ident">FastFieldReader</span>, <span class="ident">I64FastFieldReader</span>, <span class="ident">U64FastFieldReader</span>};
<span class="kw">use</span> <span class="ident">Postings</span>;
<span class="kw">use</span> <span class="ident">rand</span>::{<span class="ident">Rng</span>, <span class="ident">SeedableRng</span>, <span class="ident">XorShiftRng</span>};
<span class="kw">use</span> <span class="ident">rand</span>::<span class="ident">distributions</span>::{<span class="ident">IndependentSample</span>, <span class="ident">Range</span>};
@@ -1803,22 +1801,22 @@
<span class="kw">let</span> <span class="ident">segment_reader</span>: <span class="kw-2">&amp;</span><span class="ident">SegmentReader</span> <span class="op">=</span> <span class="ident">searcher</span>.<span class="ident">segment_reader</span>(<span class="number">0</span>);
{
<span class="kw">let</span> <span class="ident">fast_field_reader_res</span> <span class="op">=</span>
<span class="ident">segment_reader</span>.<span class="ident">get_fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">U64FastFieldReader</span><span class="op">&gt;</span>(<span class="ident">text_field</span>);
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>(<span class="ident">text_field</span>);
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">fast_field_reader_res</span>.<span class="ident">is_err</span>());
}
{
<span class="kw">let</span> <span class="ident">fast_field_reader_res</span> <span class="op">=</span>
<span class="ident">segment_reader</span>.<span class="ident">get_fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">U64FastFieldReader</span><span class="op">&gt;</span>(<span class="ident">stored_int_field</span>);
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>(<span class="ident">stored_int_field</span>);
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">fast_field_reader_res</span>.<span class="ident">is_err</span>());
}
{
<span class="kw">let</span> <span class="ident">fast_field_reader_res</span> <span class="op">=</span>
<span class="ident">segment_reader</span>.<span class="ident">get_fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">U64FastFieldReader</span><span class="op">&gt;</span>(<span class="ident">fast_field_signed</span>);
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;</span>(<span class="ident">fast_field_signed</span>);
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">fast_field_reader_res</span>.<span class="ident">is_err</span>());
}
{
<span class="kw">let</span> <span class="ident">fast_field_reader_res</span> <span class="op">=</span>
<span class="ident">segment_reader</span>.<span class="ident">get_fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">I64FastFieldReader</span><span class="op">&gt;</span>(<span class="ident">fast_field_signed</span>);
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">i64</span><span class="op">&gt;</span>(<span class="ident">fast_field_signed</span>);
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">fast_field_reader_res</span>.<span class="ident">is_ok</span>());
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">fast_field_reader_res</span>.<span class="ident">unwrap</span>();
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="number">0</span>), <span class="number">4i64</span>)
@@ -1826,7 +1824,7 @@
{
<span class="kw">let</span> <span class="ident">fast_field_reader_res</span> <span class="op">=</span>
<span class="ident">segment_reader</span>.<span class="ident">get_fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">I64FastFieldReader</span><span class="op">&gt;</span>(<span class="ident">fast_field_signed</span>);
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>::<span class="op">&lt;</span><span class="ident">i64</span><span class="op">&gt;</span>(<span class="ident">fast_field_signed</span>);
<span class="macro">assert</span><span class="macro">!</span>(<span class="ident">fast_field_reader_res</span>.<span class="ident">is_ok</span>());
<span class="kw">let</span> <span class="ident">fast_field_reader</span> <span class="op">=</span> <span class="ident">fast_field_reader_res</span>.<span class="ident">unwrap</span>();
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">fast_field_reader</span>.<span class="ident">get</span>(<span class="number">0</span>), <span class="number">4i64</span>)

View File

@@ -177,7 +177,7 @@
(<span class="macro-nonterminal">$</span><span class="kw">crate</span>::<span class="macro-nonterminal">Document</span>::<span class="ident">default</span>())
}
}; <span class="comment">// avoids a warning due to the useless `mut`.</span>
($(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">field</span>:<span class="ident">ident</span> <span class="op">=&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>:<span class="ident">expr</span>),<span class="kw-2">*</span>) <span class="op">=&gt;</span> {
($(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">field</span>:<span class="ident">expr</span> <span class="op">=&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>:<span class="ident">expr</span>),<span class="kw-2">*</span>) <span class="op">=&gt;</span> {
{
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">document</span> <span class="op">=</span> <span class="macro-nonterminal">$</span><span class="kw">crate</span>::<span class="macro-nonterminal">Document</span>::<span class="ident">default</span>();
$(

View File

@@ -756,7 +756,6 @@
<span id="700">700</span>
<span id="701">701</span>
<span id="702">702</span>
<span id="703">703</span>
</pre><pre class="rust ">
<span class="doccomment">/*!
Postings module (also called inverted index)
@@ -785,7 +784,7 @@ Postings module (also called inverted index)
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">common</span>::<span class="ident">HasLen</span>;
<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">type</span> <span class="ident">UnorderedTermId</span> <span class="op">=</span> <span class="ident">usize</span>;
<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">type</span> <span class="ident">UnorderedTermId</span> <span class="op">=</span> <span class="ident">u64</span>;
<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">enum_variant_names</span>)]</span>
<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">enum</span> <span class="ident">FreqReadingOption</span> {
@@ -811,7 +810,6 @@ Postings module (also called inverted index)
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">IndexRecordOption</span>;
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">iter</span>;
<span class="kw">use</span> <span class="ident">datastruct</span>::<span class="ident">stacker</span>::<span class="ident">Heap</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">FastFieldReader</span>;
<span class="kw">use</span> <span class="ident">query</span>::<span class="ident">TermQuery</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="ident">Field</span>;
<span class="kw">use</span> <span class="ident">test</span>::{<span class="self">self</span>, <span class="ident">Bencher</span>};

View File

@@ -528,7 +528,7 @@
<span class="ident">heap</span>: <span class="kw-2">&amp;</span><span class="ident">Heap</span>,
) <span class="op">-&gt;</span> <span class="ident">UnorderedTermId</span> {
<span class="macro">debug_assert</span><span class="macro">!</span>(<span class="ident">term</span>.<span class="ident">as_slice</span>().<span class="ident">len</span>() <span class="op">&gt;=</span> <span class="number">4</span>);
<span class="kw">let</span> (<span class="ident">term_ord</span>, <span class="ident">recorder</span>): (<span class="ident">usize</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">Rec</span>) <span class="op">=</span> <span class="ident">term_index</span>.<span class="ident">get_or_create</span>(<span class="ident">term</span>);
<span class="kw">let</span> (<span class="ident">term_ord</span>, <span class="ident">recorder</span>): (<span class="ident">UnorderedTermId</span>, <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">Rec</span>) <span class="op">=</span> <span class="ident">term_index</span>.<span class="ident">get_or_create</span>(<span class="ident">term</span>);
<span class="kw">let</span> <span class="ident">current_doc</span> <span class="op">=</span> <span class="ident">recorder</span>.<span class="ident">current_doc</span>();
<span class="kw">if</span> <span class="ident">current_doc</span> <span class="op">!=</span> <span class="ident">doc</span> {
<span class="kw">if</span> <span class="ident">current_doc</span> <span class="op">!=</span> <span class="ident">u32</span>::<span class="ident">max_value</span>() {

View File

@@ -125,7 +125,6 @@
<span id="69">69</span>
<span id="70">70</span>
<span id="71">71</span>
<span id="72">72</span>
</pre><pre class="rust ">
<span class="kw">mod</span> <span class="ident">term_query</span>;
<span class="kw">mod</span> <span class="ident">term_weight</span>;
@@ -142,7 +141,6 @@
<span class="kw">use</span> <span class="ident">postings</span>::<span class="ident">SegmentPostings</span>;
<span class="kw">use</span> <span class="ident">query</span>::{<span class="ident">Query</span>, <span class="ident">Scorer</span>};
<span class="kw">use</span> <span class="ident">query</span>::<span class="ident">term_query</span>::<span class="ident">TermScorer</span>;
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">U64FastFieldReader</span>;
<span class="kw">use</span> <span class="ident">query</span>::<span class="ident">TermQuery</span>;
<span class="kw">use</span> <span class="ident">Index</span>;
<span class="kw">use</span> <span class="ident">schema</span>::<span class="kw-2">*</span>;
@@ -185,7 +183,7 @@
<span class="attribute">#[<span class="ident">test</span>]</span>
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">test_term_scorer</span>() {
<span class="kw">let</span> <span class="ident">left_fieldnorms</span> <span class="op">=</span> <span class="ident">U64FastFieldReader</span>::<span class="ident">from</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">10</span>, <span class="number">4</span>]);
<span class="kw">let</span> <span class="ident">left_fieldnorms</span> <span class="op">=</span> <span class="ident">FastFieldReader</span>::<span class="ident">from</span>(<span class="macro">vec</span><span class="macro">!</span>[<span class="number">10</span>, <span class="number">4</span>]);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">left_fieldnorms</span>.<span class="ident">get</span>(<span class="number">0</span>), <span class="number">10</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">left_fieldnorms</span>.<span class="ident">get</span>(<span class="number">1</span>), <span class="number">4</span>);
<span class="kw">let</span> <span class="ident">left</span> <span class="op">=</span> <span class="ident">SegmentPostings</span>::<span class="ident">create_from_docs</span>(<span class="kw-2">&amp;</span>[<span class="number">1</span>]);

View File

@@ -105,12 +105,10 @@
<span id="49">49</span>
<span id="50">50</span>
<span id="51">51</span>
<span id="52">52</span>
</pre><pre class="rust ">
<span class="kw">use</span> <span class="ident">Score</span>;
<span class="kw">use</span> <span class="ident">DocId</span>;
<span class="kw">use</span> <span class="ident">docset</span>::{<span class="ident">DocSet</span>, <span class="ident">SkipResult</span>};
<span class="kw">use</span> <span class="ident">fastfield</span>::<span class="ident">U64FastFieldReader</span>;
<span class="kw">use</span> <span class="ident">postings</span>::<span class="ident">SegmentPostings</span>;
<span class="kw">use</span> <span class="ident">query</span>::<span class="ident">Scorer</span>;
<span class="kw">use</span> <span class="ident">postings</span>::<span class="ident">Postings</span>;
@@ -118,7 +116,7 @@
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">TermScorer</span> {
<span class="kw">pub</span> <span class="ident">idf</span>: <span class="ident">Score</span>,
<span class="kw">pub</span> <span class="ident">fieldnorm_reader_opt</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">U64FastFieldReader</span><span class="op">&gt;</span>,
<span class="kw">pub</span> <span class="ident">fieldnorm_reader_opt</span>: <span class="prelude-ty">Option</span><span class="op">&lt;</span><span class="ident">FastFieldReader</span><span class="op">&lt;</span><span class="ident">u64</span><span class="op">&gt;&gt;</span>,
<span class="kw">pub</span> <span class="ident">postings</span>: <span class="ident">SegmentPostings</span>,
}

View File

@@ -489,7 +489,7 @@
<span class="kw">use</span> <span class="ident">Score</span>;
<span class="kw">use</span> <span class="ident">query</span>::<span class="ident">score_combiner</span>::{<span class="ident">DoNothingCombiner</span>, <span class="ident">ScoreCombiner</span>};
<span class="kw">const</span> <span class="ident">HORIZON_NUM_TINYBITSETS</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="number">32</span>;
<span class="kw">const</span> <span class="ident">HORIZON_NUM_TINYBITSETS</span>: <span class="ident">usize</span> <span class="op">=</span> <span class="number">64</span>;
<span class="kw">const</span> <span class="ident">HORIZON</span>: <span class="ident">u32</span> <span class="op">=</span> <span class="number">64u32</span> <span class="op">*</span> <span class="ident">HORIZON_NUM_TINYBITSETS</span> <span class="kw">as</span> <span class="ident">u32</span>;
<span class="doccomment">/// Creates a `DocSet` that iterator through the intersection of two `DocSet`s.</span>

View File

@@ -59,7 +59,7 @@
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../../src/tantivy/collector/mod.rs.html#1-194' title='goto source code'>[src]</a></span></h1>
</span><a class='srclink' href='../../src/tantivy/collector/mod.rs.html#1-193' title='goto source code'>[src]</a></span></h1>
<div class='docblock'><p>Defines how the documents matching a search query should be processed.</p>
</div><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=trait.FastValue.html">
</head>
<body>
<p>Redirecting to <a href="trait.FastValue.html">trait.FastValue.html</a>...</p>
<script>location.replace("trait.FastValue.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -59,7 +59,7 @@
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#1-438' title='goto source code'>[src]</a></span></h1>
</span><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#1-511' title='goto source code'>[src]</a></span></h1>
<div class='docblock'><p>Column oriented field storage for tantivy.</p>
<p>It is the equivalent of <code>Lucene</code>'s <code>DocValues</code>.</p>
<p>Fast fields is a column-oriented fashion storage of <code>tantivy</code>.</p>
@@ -104,6 +104,14 @@ defined in the schema as a fast field.</p>
</td>
</tr>
<tr class=' module-item'>
<td><a class="struct" href="struct.FastFieldReader.html"
title='struct tantivy::fastfield::FastFieldReader'>FastFieldReader</a></td>
<td class='docblock-short'>
<p>Trait for accessing a fastfield.</p>
</td>
</tr>
<tr class=' module-item'>
<td><a class="struct" href="struct.FastFieldSerializer.html"
title='struct tantivy::fastfield::FastFieldSerializer'>FastFieldSerializer</a></td>
@@ -121,14 +129,6 @@ fastfields on disk.</p>
</td>
</tr>
<tr class=' module-item'>
<td><a class="struct" href="struct.I64FastFieldReader.html"
title='struct tantivy::fastfield::I64FastFieldReader'>I64FastFieldReader</a></td>
<td class='docblock-short'>
<p><code>FastFieldReader</code> for signed 64-bits integers.</p>
</td>
</tr>
<tr class=' module-item'>
<td><a class="struct" href="struct.IntFastFieldWriter.html"
title='struct tantivy::fastfield::IntFastFieldWriter'>IntFastFieldWriter</a></td>
@@ -144,22 +144,14 @@ The fast field writer just keeps the values in memory.</p>
<td class='docblock-short'>
<p>Reader for a multivalued <code>u64</code> fast field.</p>
</td>
</tr>
<tr class=' module-item'>
<td><a class="struct" href="struct.U64FastFieldReader.html"
title='struct tantivy::fastfield::U64FastFieldReader'>U64FastFieldReader</a></td>
<td class='docblock-short'>
<p><code>FastFieldReader</code> for unsigned 64-bits integers.</p>
</td>
</tr></table><h2 id='traits' class='section-header'><a href="#traits">Traits</a></h2>
<table>
<tr class=' module-item'>
<td><a class="trait" href="trait.FastFieldReader.html"
title='trait tantivy::fastfield::FastFieldReader'>FastFieldReader</a></td>
<td><a class="trait" href="trait.FastValue.html"
title='trait tantivy::fastfield::FastValue'>FastValue</a></td>
<td class='docblock-short'>
<p>Trait for accessing a fastfield.</p>
<p>Trait for types that are allowed for fast fields: (u64 or i64).</p>
</td>
</tr></table><h2 id='functions' class='section-header'><a href="#functions">Functions</a></h2>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="refresh" content="0;URL=../../../tantivy/fastfield/struct.FastFieldReader.html">
</head>
<body>
<p>Redirecting to <a href="../../../tantivy/fastfield/struct.FastFieldReader.html">../../../tantivy/fastfield/struct.FastFieldReader.html</a>...</p>
<script>location.replace("../../../tantivy/fastfield/struct.FastFieldReader.html" + location.search + location.hash);</script>
</body>
</html>

View File

@@ -1 +1 @@
initSidebarItems({"fn":[["write_delete_bitset","Write a delete `BitSet`"]],"struct":[["DeleteBitSet","Set of deleted `DocId`s."],["FacetReader","The facet reader makes it possible to access the list of facets associated to a given document in a specific segment."],["FastFieldNotAvailableError","`FastFieldNotAvailableError` is returned when the user requested for a fast field reader, and the field was not defined in the schema as a fast field."],["FastFieldSerializer","`FastFieldSerializer` is in charge of serializing fastfields on disk."],["FastFieldsWriter","The fastfieldswriter regroup all of the fast field writers."],["I64FastFieldReader","`FastFieldReader` for signed 64-bits integers."],["IntFastFieldWriter","Fast field writer for ints. The fast field writer just keeps the values in memory."],["MultiValueIntFastFieldReader","Reader for a multivalued `u64` fast field."],["U64FastFieldReader","`FastFieldReader` for unsigned 64-bits integers."]],"trait":[["FastFieldReader","Trait for accessing a fastfield."]],"type":[["Result","Result when trying to access a fast field reader."]]});
initSidebarItems({"fn":[["write_delete_bitset","Write a delete `BitSet`"]],"struct":[["DeleteBitSet","Set of deleted `DocId`s."],["FacetReader","The facet reader makes it possible to access the list of facets associated to a given document in a specific segment."],["FastFieldNotAvailableError","`FastFieldNotAvailableError` is returned when the user requested for a fast field reader, and the field was not defined in the schema as a fast field."],["FastFieldReader","Trait for accessing a fastfield."],["FastFieldSerializer","`FastFieldSerializer` is in charge of serializing fastfields on disk."],["FastFieldsWriter","The fastfieldswriter regroup all of the fast field writers."],["IntFastFieldWriter","Fast field writer for ints. The fast field writer just keeps the values in memory."],["MultiValueIntFastFieldReader","Reader for a multivalued `u64` fast field."]],"trait":[["FastValue","Trait for types that are allowed for fast fields: (u64 or i64)."]],"type":[["Result","Result when trying to access a fast field reader."]]});

View File

@@ -75,7 +75,7 @@ only makes sense for a given segment.</p>
Methods<a href='#methods' class='anchor'></a>
</h2>
<h3 id='impl' class='impl'><span class='in-band'><code>impl <a class="struct" href="../../tantivy/fastfield/struct.FacetReader.html" title="struct tantivy::fastfield::FacetReader">FacetReader</a></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/facet_reader.rs.html#25-68' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.new' class="method"><span id='new.v' class='invisible'><code>pub fn <a href='#method.new' class='fnname'>new</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;term_ords: <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;term_dict: <a class="struct" href="../../tantivy/termdict/struct.TermDictionaryImpl.html" title="struct tantivy::termdict::TermDictionaryImpl">TermDictionaryImpl</a><br>) -&gt; <a class="struct" href="../../tantivy/fastfield/struct.FacetReader.html" title="struct tantivy::fastfield::FacetReader">FacetReader</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/facet_reader.rs.html#33-41' title='goto source code'>[src]</a></span></h4>
<div class='impl-items'><h4 id='method.new' class="method"><span id='new.v' class='invisible'><code>pub fn <a href='#method.new' class='fnname'>new</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;term_ords: <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;term_dict: <a class="struct" href="../../tantivy/termdict/struct.TermDictionaryImpl.html" title="struct tantivy::termdict::TermDictionaryImpl">TermDictionaryImpl</a><br>) -&gt; <a class="struct" href="../../tantivy/fastfield/struct.FacetReader.html" title="struct tantivy::fastfield::FacetReader">FacetReader</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/facet_reader.rs.html#33-41' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Creates a new <code>FacetReader</code>.</p>
<p>A facet reader just wraps :</p>
<ul>

View File

@@ -0,0 +1,171 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="rustdoc">
<meta name="description" content="API documentation for the Rust `FastFieldReader` struct in crate `tantivy`.">
<meta name="keywords" content="rust, rustlang, rust-lang, FastFieldReader">
<title>tantivy::fastfield::FastFieldReader - Rust</title>
<link rel="stylesheet" type="text/css" href="../../normalize.css">
<link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle">
<link rel="stylesheet" type="text/css" href="../../dark.css">
<link rel="stylesheet" type="text/css" href="../../main.css" id="themeStyle">
<script src="../../storage.js"></script>
</head>
<body class="rustdoc struct">
<!--[if lte IE 8]>
<div class="warning">
This old browser is unsupported and will most likely display funky
things.
</div>
<![endif]-->
<nav class="sidebar">
<div class="sidebar-menu">&#9776;</div>
<a href='../../tantivy/index.html'><img src='http://fulmicoton.com/tantivy-logo/tantivy-logo.png' alt='logo' width='100'></a>
<p class='location'>Struct FastFieldReader</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#methods">Methods</a><div class="sidebar-links"><a href="#method.open">open</a><a href="#method.get">get</a><a href="#method.get_range">get_range</a><a href="#method.min_value">min_value</a><a href="#method.max_value">max_value</a></div><a class="sidebar-title" href="#implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-From%3CVec%3CItem%3E%3E">From&lt;Vec&lt;Item&gt;&gt;</a></div></div><p class='location'><a href='../index.html'>tantivy</a>::<wbr><a href='index.html'>fastfield</a></p><script>window.sidebarCurrent = {name: 'FastFieldReader', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script></div>
</nav>
<div class="theme-picker">
<button id="theme-picker" aria-label="Pick another theme!">
<img src="../../brush.svg" width="18" alt="Pick another theme!">
</button>
<div id="theme-choices"></div>
</div>
<script src="../../theme.js"></script>
<nav class="sub">
<form class="search-form js-only">
<div class="search-container">
<input class="search-input" name="search"
autocomplete="off"
placeholder="Click or press S to search, ? for more options…"
type="search">
</div>
</form>
</nav>
<section id='main' class="content">
<h1 class='fqn'><span class='in-band'>Struct <a href='../index.html'>tantivy</a>::<wbr><a href='index.html'>fastfield</a>::<wbr><a class="struct" href=''>FastFieldReader</a></span><span class='out-of-band'><span id='render-detail'>
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#23-28' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct FastFieldReader&lt;Item:&nbsp;<a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>&gt; { /* fields omitted */ }</pre><div class='docblock'><p>Trait for accessing a fastfield.</p>
<p>Depending on the field type, a different
fast field is required.</p>
</div>
<h2 id='methods' class='small-section-header'>
Methods<a href='#methods' class='anchor'></a>
</h2>
<h3 id='impl' class='impl'><span class='in-band'><code>impl&lt;Item:&nbsp;<a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>&gt; <a class="struct" href="../../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a>&lt;Item&gt;</code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#30-101' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.open' class="method"><span id='open.v' class='invisible'><code>pub fn <a href='#method.open' class='fnname'>open</a>(data: <a class="enum" href="../../tantivy/directory/enum.ReadOnlySource.html" title="enum tantivy::directory::ReadOnlySource">ReadOnlySource</a>) -&gt; Self</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#33-53' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Opens a fast field given a source.</p>
</div><h4 id='method.get' class="method"><span id='get.v' class='invisible'><code>pub fn <a href='#method.get' class='fnname'>get</a>(&amp;self, doc: <a class="type" href="../../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>) -&gt; Item</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#64-66' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Return the value associated to the given document.</p>
<p>This accessor should return as fast as possible.</p>
<h1 id="panics" class="section-header"><a href="#panics">Panics</a></h1>
<p>May panic if <code>doc</code> is greater than the segment</p>
</div><h4 id='method.get_range' class="method"><span id='get_range.v' class='invisible'><code>pub fn <a href='#method.get_range' class='fnname'>get_range</a>(&amp;self, start: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>, output: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;mut [Item]</a>)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#76-82' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Fills an output buffer with the fast field values
associated with the <code>DocId</code> going from
<code>start</code> to <code>start + output.len()</code>.</p>
<h1 id="panics-1" class="section-header"><a href="#panics-1">Panics</a></h1>
<p>May panic if <code>start + output.len()</code> is greater than
the segment's <code>maxdoc</code>.</p>
</div><h4 id='method.min_value' class="method"><span id='min_value.v' class='invisible'><code>pub fn <a href='#method.min_value' class='fnname'>min_value</a>(&amp;self) -&gt; Item</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#89-91' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns the minimum value for this fast field.</p>
<p>The max value does not take in account of possible
deleted document, and should be considered as an upper bound
of the actual maximum value.</p>
</div><h4 id='method.max_value' class="method"><span id='max_value.v' class='invisible'><code>pub fn <a href='#method.max_value' class='fnname'>max_value</a>(&amp;self) -&gt; Item</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#98-100' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns the maximum value for this fast field.</p>
<p>The max value does not take in account of possible
deleted document, and should be considered as an upper bound
of the actual maximum value.</p>
</div></div>
<h2 id='implementations' class='small-section-header'>
Trait Implementations<a href='#implementations' class='anchor'></a>
</h2>
<h3 id='impl-Clone' class='impl'><span class='in-band'><code>impl&lt;Item:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="../../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a>&lt;Item&gt;</code><a href='#impl-Clone' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#22' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.clone' class="method"><span id='clone.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone' class='fnname'>clone</a>(&amp;self) -&gt; <a class="struct" href="../../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a>&lt;Item&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#22' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
</div><h4 id='method.clone_from' class="method"><span id='clone_from.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from' class='fnname'>clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self)</code></span><span class='out-of-band'><div class='ghost'></div><div class='since' title='Stable since Rust version 1.0.0'>1.0.0</div><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/clone.rs.html#112-114' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
</div></div><h3 id='impl-From%3CVec%3CItem%3E%3E' class='impl'><span class='in-band'><code>impl&lt;Item:&nbsp;<a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;Item&gt;&gt; for <a class="struct" href="../../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a>&lt;Item&gt;</code><a href='#impl-From%3CVec%3CItem%3E%3E' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#103-139' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.from' class="method"><span id='from.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from' class='fnname'>from</a>(vals: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;Item&gt;) -&gt; <a class="struct" href="../../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a>&lt;Item&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/reader.rs.html#104-138' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Performs the conversion.</p>
</div></div></section>
<section id='search' class="content hidden"></section>
<section class="footer"></section>
<aside id="help" class="hidden">
<div>
<h1 class="hidden">Help</h1>
<div class="shortcuts">
<h2>Keyboard Shortcuts</h2>
<dl>
<dt><kbd>?</kbd></dt>
<dd>Show this help dialog</dd>
<dt><kbd>S</kbd></dt>
<dd>Focus the search field</dd>
<dt><kbd></kbd></dt>
<dd>Move up in search results</dd>
<dt><kbd></kbd></dt>
<dd>Move down in search results</dd>
<dt><kbd></kbd></dt>
<dd>Switch tab</dd>
<dt><kbd>&#9166;</kbd></dt>
<dd>Go to active search result</dd>
<dt><kbd>+</kbd></dt>
<dd>Expand all sections</dd>
<dt><kbd>-</kbd></dt>
<dd>Collapse all sections</dd>
</dl>
</div>
<div class="infos">
<h2>Search Tricks</h2>
<p>
Prefix searches with a type followed by a colon (e.g.
<code>fn:</code>) to restrict the search to a given type.
</p>
<p>
Accepted types are: <code>fn</code>, <code>mod</code>,
<code>struct</code>, <code>enum</code>,
<code>trait</code>, <code>type</code>, <code>macro</code>,
and <code>const</code>.
</p>
<p>
Search functions by type signature (e.g.
<code>vec -> usize</code> or <code>* -> vec</code>)
</p>
</div>
</div>
</aside>
<script>
window.rootPath = "../../";
window.currentCrate = "tantivy";
</script>
<script src="../../main.js"></script>
<script defer src="../../search-index.js"></script>
</body>
</html>

View File

@@ -59,23 +59,23 @@
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#15-18' title='goto source code'>[src]</a></span></h1>
</span><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#14-17' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct FastFieldsWriter { /* fields omitted */ }</pre><div class='docblock'><p>The fastfieldswriter regroup all of the fast field writers.</p>
</div>
<h2 id='methods' class='small-section-header'>
Methods<a href='#methods' class='anchor'></a>
</h2>
<h3 id='impl' class='impl'><span class='in-band'><code>impl <a class="struct" href="../../tantivy/fastfield/struct.FastFieldsWriter.html" title="struct tantivy::fastfield::FastFieldsWriter">FastFieldsWriter</a></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#20-133' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.from_schema' class="method"><span id='from_schema.v' class='invisible'><code>pub fn <a href='#method.from_schema' class='fnname'>from_schema</a>(schema: &amp;<a class="struct" href="../../tantivy/schema/struct.Schema.html" title="struct tantivy::schema::Schema">Schema</a>) -&gt; <a class="struct" href="../../tantivy/fastfield/struct.FastFieldsWriter.html" title="struct tantivy::fastfield::FastFieldsWriter">FastFieldsWriter</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#22-59' title='goto source code'>[src]</a></span></h4>
<h3 id='impl' class='impl'><span class='in-band'><code>impl <a class="struct" href="../../tantivy/fastfield/struct.FastFieldsWriter.html" title="struct tantivy::fastfield::FastFieldsWriter">FastFieldsWriter</a></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#19-129' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.from_schema' class="method"><span id='from_schema.v' class='invisible'><code>pub fn <a href='#method.from_schema' class='fnname'>from_schema</a>(schema: &amp;<a class="struct" href="../../tantivy/schema/struct.Schema.html" title="struct tantivy::schema::Schema">Schema</a>) -&gt; <a class="struct" href="../../tantivy/fastfield/struct.FastFieldsWriter.html" title="struct tantivy::fastfield::FastFieldsWriter">FastFieldsWriter</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#21-58' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Create all <code>FastFieldWriter</code> required by the schema.</p>
</div><h4 id='method.get_field_writer' class="method"><span id='get_field_writer.v' class='invisible'><code>pub fn <a href='#method.get_field_writer' class='fnname'>get_field_writer</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;field: <a class="struct" href="../../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;mut <a class="struct" href="../../tantivy/fastfield/struct.IntFastFieldWriter.html" title="struct tantivy::fastfield::IntFastFieldWriter">IntFastFieldWriter</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#71-76' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.get_field_writer' class="method"><span id='get_field_writer.v' class='invisible'><code>pub fn <a href='#method.get_field_writer' class='fnname'>get_field_writer</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;field: <a class="struct" href="../../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;mut <a class="struct" href="../../tantivy/fastfield/struct.IntFastFieldWriter.html" title="struct tantivy::fastfield::IntFastFieldWriter">IntFastFieldWriter</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#70-75' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Get the <code>FastFieldWriter</code> associated to a field.</p>
</div><h4 id='method.add_document' class="method"><span id='add_document.v' class='invisible'><code>pub fn <a href='#method.add_document' class='fnname'>add_document</a>(&amp;mut self, doc: &amp;<a class="struct" href="../../tantivy/struct.Document.html" title="struct tantivy::Document">Document</a>)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#94-101' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.add_document' class="method"><span id='add_document.v' class='invisible'><code>pub fn <a href='#method.add_document' class='fnname'>add_document</a>(&amp;mut self, doc: &amp;<a class="struct" href="../../tantivy/struct.Document.html" title="struct tantivy::Document">Document</a>)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#93-101' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Indexes all of the fastfields of a new document.</p>
</div><h4 id='method.serialize' class="method"><span id='serialize.v' class='invisible'><code>pub fn <a href='#method.serialize' class='fnname'>serialize</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;serializer: &amp;mut <a class="struct" href="../../tantivy/fastfield/struct.FastFieldSerializer.html" title="struct tantivy::fastfield::FastFieldSerializer">FastFieldSerializer</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;mapping: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="struct" href="../../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;&gt;<br>) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#105-122' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.serialize' class="method"><span id='serialize.v' class='invisible'><code>pub fn <a href='#method.serialize' class='fnname'>serialize</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;serializer: &amp;mut <a class="struct" href="../../tantivy/fastfield/struct.FastFieldSerializer.html" title="struct tantivy::fastfield::FastFieldSerializer">FastFieldSerializer</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;mapping: &amp;<a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="struct" href="../../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/std/collections/hash/map/struct.HashMap.html" title="struct std::collections::hash::map::HashMap">HashMap</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;&gt;<br>) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#105-118' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Serializes all of the <code>FastFieldWriter</code>s by pushing them in
order to the fast field serializer.</p>
</div><h4 id='method.fill_val_up_to' class="method"><span id='fill_val_up_to.v' class='invisible'><code>pub fn <a href='#method.fill_val_up_to' class='fnname'>fill_val_up_to</a>(&amp;mut self, doc: <a class="type" href="../../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#128-132' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.fill_val_up_to' class="method"><span id='fill_val_up_to.v' class='invisible'><code>pub fn <a href='#method.fill_val_up_to' class='fnname'>fill_val_up_to</a>(&amp;mut self, doc: <a class="type" href="../../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#124-128' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Ensures all of the fast field writers have
reached <code>doc</code>. (included)</p>
<p>The missing values will be filled with 0.</p>

View File

@@ -59,7 +59,7 @@
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#150-157' title='goto source code'>[src]</a></span></h1>
</span><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#146-153' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct IntFastFieldWriter { /* fields omitted */ }</pre><div class='docblock'><p>Fast field writer for ints.
The fast field writer just keeps the values in memory.</p>
<p>Only when the segment writer can be closed and
@@ -76,20 +76,20 @@ using <code>common::i64_to_u64</code>.</p>
<h2 id='methods' class='small-section-header'>
Methods<a href='#methods' class='anchor'></a>
</h2>
<h3 id='impl' class='impl'><span class='in-band'><code>impl <a class="struct" href="../../tantivy/fastfield/struct.IntFastFieldWriter.html" title="struct tantivy::fastfield::IntFastFieldWriter">IntFastFieldWriter</a></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#159-263' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.new' class="method"><span id='new.v' class='invisible'><code>pub fn <a href='#method.new' class='fnname'>new</a>(field: <a class="struct" href="../../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -&gt; <a class="struct" href="../../tantivy/fastfield/struct.IntFastFieldWriter.html" title="struct tantivy::fastfield::IntFastFieldWriter">IntFastFieldWriter</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#161-170' title='goto source code'>[src]</a></span></h4>
<h3 id='impl' class='impl'><span class='in-band'><code>impl <a class="struct" href="../../tantivy/fastfield/struct.IntFastFieldWriter.html" title="struct tantivy::fastfield::IntFastFieldWriter">IntFastFieldWriter</a></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#155-255' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.new' class="method"><span id='new.v' class='invisible'><code>pub fn <a href='#method.new' class='fnname'>new</a>(field: <a class="struct" href="../../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -&gt; <a class="struct" href="../../tantivy/fastfield/struct.IntFastFieldWriter.html" title="struct tantivy::fastfield::IntFastFieldWriter">IntFastFieldWriter</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#157-166' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Creates a new <code>IntFastFieldWriter</code></p>
</div><h4 id='method.field' class="method"><span id='field.v' class='invisible'><code>pub fn <a href='#method.field' class='fnname'>field</a>(&amp;self) -&gt; <a class="struct" href="../../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#173-175' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.field' class="method"><span id='field.v' class='invisible'><code>pub fn <a href='#method.field' class='fnname'>field</a>(&amp;self) -&gt; <a class="struct" href="../../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#169-171' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns the field that this writer is targetting.</p>
</div><h4 id='method.add_val' class="method"><span id='add_val.v' class='invisible'><code>pub fn <a href='#method.add_val' class='fnname'>add_val</a>(&amp;mut self, val: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#203-216' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.add_val' class="method"><span id='add_val.v' class='invisible'><code>pub fn <a href='#method.add_val' class='fnname'>add_val</a>(&amp;mut self, val: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#199-212' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Records a new value.</p>
<p>The n-th value being recorded is implicitely
associated to the document with the <code>DocId</code> n.
(Well, <code>n-1</code> actually because of 0-indexing)</p>
</div><h4 id='method.add_document' class="method"><span id='add_document.v' class='invisible'><code>pub fn <a href='#method.add_document' class='fnname'>add_document</a>(&amp;mut self, doc: &amp;<a class="struct" href="../../tantivy/struct.Document.html" title="struct tantivy::Document">Document</a>)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#241-244' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.add_document' class="method"><span id='add_document.v' class='invisible'><code>pub fn <a href='#method.add_document' class='fnname'>add_document</a>(&amp;mut self, doc: &amp;<a class="struct" href="../../tantivy/struct.Document.html" title="struct tantivy::Document">Document</a>)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#233-236' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Extract the fast field value from the document
(or use the default value) and records it.</p>
</div><h4 id='method.serialize' class="method"><span id='serialize.v' class='invisible'><code>pub fn <a href='#method.serialize' class='fnname'>serialize</a>(&amp;self, serializer: &amp;mut <a class="struct" href="../../tantivy/fastfield/struct.FastFieldSerializer.html" title="struct tantivy::fastfield::FastFieldSerializer">FastFieldSerializer</a>) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#247-262' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.serialize' class="method"><span id='serialize.v' class='invisible'><code>pub fn <a href='#method.serialize' class='fnname'>serialize</a>(&amp;self, serializer: &amp;mut <a class="struct" href="../../tantivy/fastfield/struct.FastFieldSerializer.html" title="struct tantivy::fastfield::FastFieldSerializer">FastFieldSerializer</a>) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/writer.rs.html#239-254' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Push the fast fields value to the <code>FastFieldWriter</code>.</p>
</div></div></section>
<section id='search' class="content hidden"></section>

View File

@@ -59,8 +59,8 @@
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../../src/tantivy/fastfield/multivalued/reader.rs.html#15-18' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct MultiValueIntFastFieldReader { /* fields omitted */ }</pre><div class='docblock'><p>Reader for a multivalued <code>u64</code> fast field.</p>
</span><a class='srclink' href='../../src/tantivy/fastfield/multivalued/reader.rs.html#14-17' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct MultiValueIntFastFieldReader&lt;Item:&nbsp;<a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>&gt; { /* fields omitted */ }</pre><div class='docblock'><p>Reader for a multivalued <code>u64</code> fast field.</p>
<p>The reader is implemented as two <code>u64</code> fast field.</p>
<p>The <code>vals_reader</code> will access the concatenated list of all
values for all reader.
@@ -69,15 +69,15 @@ The <code>idx_reader</code> associated, for each document, the index of its firs
<h2 id='methods' class='small-section-header'>
Methods<a href='#methods' class='anchor'></a>
</h2>
<h3 id='impl' class='impl'><span class='in-band'><code>impl <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/multivalued/reader.rs.html#20-41' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.get_vals' class="method"><span id='get_vals.v' class='invisible'><code>pub fn <a href='#method.get_vals' class='fnname'>get_vals</a>(&amp;self, doc: <a class="type" href="../../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>, vals: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/multivalued/reader.rs.html#32-40' title='goto source code'>[src]</a></span></h4>
<h3 id='impl' class='impl'><span class='in-band'><code>impl&lt;Item:&nbsp;<a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>&gt; <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a>&lt;Item&gt;</code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/multivalued/reader.rs.html#19-38' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.get_vals' class="method"><span id='get_vals.v' class='invisible'><code>pub fn <a href='#method.get_vals' class='fnname'>get_vals</a>(&amp;self, doc: <a class="type" href="../../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>, vals: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;Item&gt;)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/multivalued/reader.rs.html#31-37' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns the array of values associated to the given <code>doc</code>.</p>
</div></div>
<h2 id='implementations' class='small-section-header'>
Trait Implementations<a href='#implementations' class='anchor'></a>
</h2>
<h3 id='impl-Clone' class='impl'><span class='in-band'><code>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a></code><a href='#impl-Clone' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/multivalued/reader.rs.html#14' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.clone' class="method"><span id='clone.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone' class='fnname'>clone</a>(&amp;self) -&gt; <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/multivalued/reader.rs.html#14' title='goto source code'>[src]</a></span></h4>
<h3 id='impl-Clone' class='impl'><span class='in-band'><code>impl&lt;Item:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a>&lt;Item&gt;</code><a href='#impl-Clone' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/multivalued/reader.rs.html#13' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.clone' class="method"><span id='clone.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone' class='fnname'>clone</a>(&amp;self) -&gt; <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a>&lt;Item&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/multivalued/reader.rs.html#13' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
</div><h4 id='method.clone_from' class="method"><span id='clone_from.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from' class='fnname'>clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self)</code></span><span class='out-of-band'><div class='ghost'></div><div class='since' title='Stable since Rust version 1.0.0'>1.0.0</div><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/clone.rs.html#112-114' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>

View File

@@ -0,0 +1,168 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="rustdoc">
<meta name="description" content="API documentation for the Rust `FastValue` trait in crate `tantivy`.">
<meta name="keywords" content="rust, rustlang, rust-lang, FastValue">
<title>tantivy::fastfield::FastValue - Rust</title>
<link rel="stylesheet" type="text/css" href="../../normalize.css">
<link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle">
<link rel="stylesheet" type="text/css" href="../../dark.css">
<link rel="stylesheet" type="text/css" href="../../main.css" id="themeStyle">
<script src="../../storage.js"></script>
</head>
<body class="rustdoc trait">
<!--[if lte IE 8]>
<div class="warning">
This old browser is unsupported and will most likely display funky
things.
</div>
<![endif]-->
<nav class="sidebar">
<div class="sidebar-menu">&#9776;</div>
<a href='../../tantivy/index.html'><img src='http://fulmicoton.com/tantivy-logo/tantivy-logo.png' alt='logo' width='100'></a>
<p class='location'>Trait FastValue</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#required-methods">Required Methods</a><div class="sidebar-links"><a href="#tymethod.from_u64">from_u64</a><a href="#tymethod.to_u64">to_u64</a><a href="#tymethod.fast_field_cardinality">fast_field_cardinality</a><a href="#tymethod.as_u64">as_u64</a></div><a class="sidebar-title" href="#foreign-impls">Implementations on Foreign Types</a><div class="sidebar-links"><a href="#impl-FastValue">u64</a><a href="#impl-FastValue">i64</a></div><a class="sidebar-title" href="#implementors">Implementors</a></div><p class='location'><a href='../index.html'>tantivy</a>::<wbr><a href='index.html'>fastfield</a></p><script>window.sidebarCurrent = {name: 'FastValue', ty: 'trait', relpath: ''};</script><script defer src="sidebar-items.js"></script></div>
</nav>
<div class="theme-picker">
<button id="theme-picker" aria-label="Pick another theme!">
<img src="../../brush.svg" width="18" alt="Pick another theme!">
</button>
<div id="theme-choices"></div>
</div>
<script src="../../theme.js"></script>
<nav class="sub">
<form class="search-form js-only">
<div class="search-container">
<input class="search-input" name="search"
autocomplete="off"
placeholder="Click or press S to search, ? for more options…"
type="search">
</div>
</form>
</nav>
<section id='main' class="content">
<h1 class='fqn'><span class='in-band'>Trait <a href='../index.html'>tantivy</a>::<wbr><a href='index.html'>fastfield</a>::<wbr><a class="trait" href=''>FastValue</a></span><span class='out-of-band'><span id='render-detail'>
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#48-68' title='goto source code'>[src]</a></span></h1>
<pre class='rust trait'>pub trait FastValue: <a class="trait" href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default">Default</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> {
fn <a href='#tymethod.from_u64' class='fnname'>from_u64</a>(val: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; Self;
<div class='item-spacer'></div> fn <a href='#tymethod.to_u64' class='fnname'>to_u64</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>;
<div class='item-spacer'></div> fn <a href='#tymethod.fast_field_cardinality' class='fnname'>fast_field_cardinality</a>(field_type: &amp;<a class="enum" href="../../tantivy/schema/enum.FieldType.html" title="enum tantivy::schema::FieldType">FieldType</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../../tantivy/schema/enum.Cardinality.html" title="enum tantivy::schema::Cardinality">Cardinality</a>&gt;;
<div class='item-spacer'></div> fn <a href='#tymethod.as_u64' class='fnname'>as_u64</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>;
}</pre><div class='docblock'><p>Trait for types that are allowed for fast fields: (u64 or i64).</p>
</div>
<h2 id='required-methods' class='small-section-header'>
Required Methods<a href='#required-methods' class='anchor'></a>
</h2>
<div class='methods'>
<h3 id='tymethod.from_u64' class='method'><span id='from_u64.v' class='invisible'><code>fn <a href='#tymethod.from_u64' class='fnname'>from_u64</a>(val: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; Self</code></span></h3><div class='docblock'><p>Converts a value from u64</p>
<p>Internally all fast field values are encoded as u64.</p>
</div><h3 id='tymethod.to_u64' class='method'><span id='to_u64.v' class='invisible'><code>fn <a href='#tymethod.to_u64' class='fnname'>to_u64</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></h3><div class='docblock'><p>Converts a value to u64.</p>
<p>Internally all fast field values are encoded as u64.</p>
</div><h3 id='tymethod.fast_field_cardinality' class='method'><span id='fast_field_cardinality.v' class='invisible'><code>fn <a href='#tymethod.fast_field_cardinality' class='fnname'>fast_field_cardinality</a>(field_type: &amp;<a class="enum" href="../../tantivy/schema/enum.FieldType.html" title="enum tantivy::schema::FieldType">FieldType</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../../tantivy/schema/enum.Cardinality.html" title="enum tantivy::schema::Cardinality">Cardinality</a>&gt;</code></span></h3><div class='docblock'><p>Returns the fast field cardinality that can be extracted from the given
<code>FieldType</code>.</p>
<p>If the type is not a fast field, <code>None</code> is returned.</p>
</div><h3 id='tymethod.as_u64' class='method'><span id='as_u64.v' class='invisible'><code>fn <a href='#tymethod.as_u64' class='fnname'>as_u64</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span></h3><div class='docblock'><p>Cast value to <code>u64</code>.
The value is just reinterpreted in memory.</p>
</div></div>
<h2 id='foreign-impls' class='small-section-header'>
Implementations on Foreign Types<a href='#foreign-impls' class='anchor'></a>
</h2>
<h3 id='impl-FastValue' class='impl'><span class='in-band'><code>impl <a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code><a href='#impl-FastValue' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#71-93' title='goto source code'>[src]</a></span></h3>
<span class='docblock autohide'><div class='impl-items'><h4 id='method.from_u64' class="method"><span id='from_u64.v-1' class='invisible'><code>fn <a href='#method.from_u64' class='fnname'>from_u64</a>(val: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; Self</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#72-74' title='goto source code'>[src]</a></span></h4>
<h4 id='method.to_u64' class="method"><span id='to_u64.v-1' class='invisible'><code>fn <a href='#method.to_u64' class='fnname'>to_u64</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#76-78' title='goto source code'>[src]</a></span></h4>
<h4 id='method.as_u64' class="method"><span id='as_u64.v-1' class='invisible'><code>fn <a href='#method.as_u64' class='fnname'>as_u64</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#80-82' title='goto source code'>[src]</a></span></h4>
<h4 id='method.fast_field_cardinality' class="method"><span id='fast_field_cardinality.v-1' class='invisible'><code>fn <a href='#method.fast_field_cardinality' class='fnname'>fast_field_cardinality</a>(field_type: &amp;<a class="enum" href="../../tantivy/schema/enum.FieldType.html" title="enum tantivy::schema::FieldType">FieldType</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../../tantivy/schema/enum.Cardinality.html" title="enum tantivy::schema::Cardinality">Cardinality</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#84-92' title='goto source code'>[src]</a></span></h4>
</div></span><h3 id='impl-FastValue-1' class='impl'><span class='in-band'><code>impl <a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a> for <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a></code><a href='#impl-FastValue-1' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#95-116' title='goto source code'>[src]</a></span></h3>
<span class='docblock autohide'><div class='impl-items'><h4 id='method.from_u64-1' class="method"><span id='from_u64.v-2' class='invisible'><code>fn <a href='#method.from_u64' class='fnname'>from_u64</a>(val: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>) -&gt; Self</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#96-98' title='goto source code'>[src]</a></span></h4>
<h4 id='method.to_u64-1' class="method"><span id='to_u64.v-2' class='invisible'><code>fn <a href='#method.to_u64' class='fnname'>to_u64</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#100-102' title='goto source code'>[src]</a></span></h4>
<h4 id='method.fast_field_cardinality-1' class="method"><span id='fast_field_cardinality.v-2' class='invisible'><code>fn <a href='#method.fast_field_cardinality' class='fnname'>fast_field_cardinality</a>(field_type: &amp;<a class="enum" href="../../tantivy/schema/enum.FieldType.html" title="enum tantivy::schema::FieldType">FieldType</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../../tantivy/schema/enum.Cardinality.html" title="enum tantivy::schema::Cardinality">Cardinality</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#105-111' title='goto source code'>[src]</a></span></h4>
<h4 id='method.as_u64-1' class="method"><span id='as_u64.v-2' class='invisible'><code>fn <a href='#method.as_u64' class='fnname'>as_u64</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/tantivy/fastfield/mod.rs.html#113-115' title='goto source code'>[src]</a></span></h4>
</div></span>
<h2 id='implementors' class='small-section-header'>
Implementors<a href='#implementors' class='anchor'></a>
</h2>
<ul class='item-list' id='implementors-list'>
</ul><script type="text/javascript" async
src="../../implementors/tantivy/fastfield/trait.FastValue.js">
</script></section>
<section id='search' class="content hidden"></section>
<section class="footer"></section>
<aside id="help" class="hidden">
<div>
<h1 class="hidden">Help</h1>
<div class="shortcuts">
<h2>Keyboard Shortcuts</h2>
<dl>
<dt><kbd>?</kbd></dt>
<dd>Show this help dialog</dd>
<dt><kbd>S</kbd></dt>
<dd>Focus the search field</dd>
<dt><kbd></kbd></dt>
<dd>Move up in search results</dd>
<dt><kbd></kbd></dt>
<dd>Move down in search results</dd>
<dt><kbd></kbd></dt>
<dd>Switch tab</dd>
<dt><kbd>&#9166;</kbd></dt>
<dd>Go to active search result</dd>
<dt><kbd>+</kbd></dt>
<dd>Expand all sections</dd>
<dt><kbd>-</kbd></dt>
<dd>Collapse all sections</dd>
</dl>
</div>
<div class="infos">
<h2>Search Tricks</h2>
<p>
Prefix searches with a type followed by a colon (e.g.
<code>fn:</code>) to restrict the search to a given type.
</p>
<p>
Accepted types are: <code>fn</code>, <code>mod</code>,
<code>struct</code>, <code>enum</code>,
<code>trait</code>, <code>type</code>, <code>macro</code>,
and <code>const</code>.
</p>
<p>
Search functions by type signature (e.g.
<code>vec -> usize</code> or <code>* -> vec</code>)
</p>
</div>
</div>
</aside>
<script>
window.rootPath = "../../";
window.currentCrate = "tantivy";
</script>
<script src="../../main.js"></script>
<script defer src="../../search-index.js"></script>
</body>
</html>

View File

@@ -59,7 +59,7 @@
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../src/tantivy/lib.rs.html#1-889' title='goto source code'>[src]</a></span></h1>
</span><a class='srclink' href='../src/tantivy/lib.rs.html#1-888' title='goto source code'>[src]</a></span></h1>
<div class='docblock'><h1 id="tantivy" class="section-header"><a href="#tantivy"><code>tantivy</code></a></h1>
<p>Tantivy is a search engine library.
Think <code>Lucene</code>, but in Rust.</p>

View File

@@ -63,7 +63,7 @@
<pre class="rust macro">
<span class="macro">macro_rules</span><span class="macro">!</span> <span class="ident">doc</span> {
() <span class="op">=&gt;</span> { ... };
($(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">field</span>:<span class="ident">ident</span> <span class="op">=&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>:<span class="ident">expr</span>),<span class="kw-2">*</span>) <span class="op">=&gt;</span> { ... };
($(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">field</span>:<span class="ident">expr</span> <span class="op">=&gt;</span> <span class="macro-nonterminal">$</span><span class="macro-nonterminal">value</span>:<span class="ident">expr</span>),<span class="kw-2">*</span>) <span class="op">=&gt;</span> { ... };
}</pre>
<div class='docblock'><p><code>doc!</code> is a shortcut that helps building <code>Document</code>
objects.</p>

View File

@@ -59,7 +59,7 @@
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../../src/tantivy/postings/mod.rs.html#1-703' title='goto source code'>[src]</a></span></h1>
</span><a class='srclink' href='../../src/tantivy/postings/mod.rs.html#1-702' title='goto source code'>[src]</a></span></h1>
<div class='docblock'><p>Postings module (also called inverted index)</p>
</div><h2 id='structs' class='section-header'><a href="#structs">Structs</a></h2>
<table>

View File

@@ -33,7 +33,7 @@
<nav class="sidebar">
<div class="sidebar-menu">&#9776;</div>
<a href='../tantivy/index.html'><img src='http://fulmicoton.com/tantivy-logo/tantivy-logo.png' alt='logo' width='100'></a>
<p class='location'>Struct SegmentReader</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#methods">Methods</a><div class="sidebar-links"><a href="#method.max_doc">max_doc</a><a href="#method.num_docs">num_docs</a><a href="#method.num_deleted_docs">num_deleted_docs</a><a href="#method.get_fast_field_reader">get_fast_field_reader</a><a href="#method.facet_reader">facet_reader</a><a href="#method.multi_value_reader">multi_value_reader</a><a href="#method.get_fieldnorms_reader">get_fieldnorms_reader</a><a href="#method.get_store_reader">get_store_reader</a><a href="#method.open">open</a><a href="#method.inverted_index">inverted_index</a><a href="#method.doc">doc</a><a href="#method.segment_id">segment_id</a><a href="#method.delete_bitset">delete_bitset</a><a href="#method.is_deleted">is_deleted</a></div><a class="sidebar-title" href="#implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a></div></div><p class='location'><a href='index.html'>tantivy</a></p><script>window.sidebarCurrent = {name: 'SegmentReader', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script></div>
<p class='location'>Struct SegmentReader</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#methods">Methods</a><div class="sidebar-links"><a href="#method.max_doc">max_doc</a><a href="#method.num_docs">num_docs</a><a href="#method.num_deleted_docs">num_deleted_docs</a><a href="#method.fast_field_reader">fast_field_reader</a><a href="#method.multi_fast_field_reader">multi_fast_field_reader</a><a href="#method.facet_reader">facet_reader</a><a href="#method.get_fieldnorms_reader">get_fieldnorms_reader</a><a href="#method.get_store_reader">get_store_reader</a><a href="#method.open">open</a><a href="#method.inverted_index">inverted_index</a><a href="#method.doc">doc</a><a href="#method.segment_id">segment_id</a><a href="#method.delete_bitset">delete_bitset</a><a href="#method.is_deleted">is_deleted</a></div><a class="sidebar-title" href="#implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Clone">Clone</a><a href="#impl-Debug">Debug</a></div></div><p class='location'><a href='index.html'>tantivy</a></p><script>window.sidebarCurrent = {name: 'SegmentReader', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script></div>
</nav>
<div class="theme-picker">
@@ -59,7 +59,7 @@
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
[<span class='inner'>&#x2212;</span>]
</a>
</span><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#43-58' title='goto source code'>[src]</a></span></h1>
</span><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#44-59' title='goto source code'>[src]</a></span></h1>
<pre class='rust struct'>pub struct SegmentReader { /* fields omitted */ }</pre><div class='docblock'><p>Entry point to access all of the datastructures of the <code>Segment</code></p>
<ul>
<li>term dictionary</li>
@@ -75,21 +75,21 @@ as close to all of the memory data is mmapped.</p>
<h2 id='methods' class='small-section-header'>
Methods<a href='#methods' class='anchor'></a>
</h2>
<h3 id='impl' class='impl'><span class='in-band'><code>impl <a class="struct" href="../tantivy/struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#60-288' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.max_doc' class="method"><span id='max_doc.v' class='invisible'><code>pub fn <a href='#method.max_doc' class='fnname'>max_doc</a>(&amp;self) -&gt; <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#65-67' title='goto source code'>[src]</a></span></h4>
<h3 id='impl' class='impl'><span class='in-band'><code>impl <a class="struct" href="../tantivy/struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#61-294' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.max_doc' class="method"><span id='max_doc.v' class='invisible'><code>pub fn <a href='#method.max_doc' class='fnname'>max_doc</a>(&amp;self) -&gt; <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#66-68' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns the highest document id ever attributed in
this segment + 1.
Today, <code>tantivy</code> does not handle deletes, so it happens
to also be the number of documents in the index.</p>
</div><h4 id='method.num_docs' class="method"><span id='num_docs.v' class='invisible'><code>pub fn <a href='#method.num_docs' class='fnname'>num_docs</a>(&amp;self) -&gt; <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#74-76' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.num_docs' class="method"><span id='num_docs.v' class='invisible'><code>pub fn <a href='#method.num_docs' class='fnname'>num_docs</a>(&amp;self) -&gt; <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#75-77' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns the number of documents.
Deleted documents are not counted.</p>
<p>Today, <code>tantivy</code> does not handle deletes so max doc and
num_docs are the same.</p>
</div><h4 id='method.num_deleted_docs' class="method"><span id='num_deleted_docs.v' class='invisible'><code>pub fn <a href='#method.num_deleted_docs' class='fnname'>num_deleted_docs</a>(&amp;self) -&gt; <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#80-82' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.num_deleted_docs' class="method"><span id='num_deleted_docs.v' class='invisible'><code>pub fn <a href='#method.num_deleted_docs' class='fnname'>num_deleted_docs</a>(&amp;self) -&gt; <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#81-83' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Return the number of documents that have been
deleted in the segment.</p>
</div><h4 id='method.get_fast_field_reader' class="method"><span id='get_fast_field_reader.v' class='invisible'><code>pub fn <a href='#method.get_fast_field_reader' class='fnname'>get_fast_field_reader</a>&lt;TFastFieldReader:&nbsp;<a class="trait" href="../tantivy/fastfield/trait.FastFieldReader.html" title="trait tantivy::fastfield::FastFieldReader">FastFieldReader</a>&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -&gt; <a class="type" href="../tantivy/fastfield/type.Result.html" title="type tantivy::fastfield::Result">Result</a>&lt;TFastFieldReader&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#94-107' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.fast_field_reader' class="method"><span id='fast_field_reader.v' class='invisible'><code>pub fn <a href='#method.fast_field_reader' class='fnname'>fast_field_reader</a>&lt;Item:&nbsp;<a class="trait" href="../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -&gt; <a class="type" href="../tantivy/fastfield/type.Result.html" title="type tantivy::fastfield::Result">Result</a>&lt;<a class="struct" href="../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a>&lt;Item&gt;&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#95-108' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Accessor to a segment's fast field reader given a field.</p>
<p>Returns the u64 fast value reader if the field
is a u64 field indexed as &quot;fast&quot;.</p>
@@ -97,50 +97,51 @@ is a u64 field indexed as &quot;fast&quot;.</p>
declared as a fast field in the schema.</p>
<h1 id="panics" class="section-header"><a href="#panics">Panics</a></h1>
<p>May panic if the index is corrupted.</p>
</div><h4 id='method.facet_reader' class="method"><span id='facet_reader.v' class='invisible'><code>pub fn <a href='#method.facet_reader' class='fnname'>facet_reader</a>(&amp;self, field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -&gt; <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="struct" href="../tantivy/fastfield/struct.FacetReader.html" title="struct tantivy::fastfield::FacetReader">FacetReader</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#110-131' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.multi_fast_field_reader' class="method"><span id='multi_fast_field_reader.v' class='invisible'><code>pub fn <a href='#method.multi_fast_field_reader' class='fnname'>multi_fast_field_reader</a>&lt;Item:&nbsp;<a class="trait" href="../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -&gt; <a class="type" href="../tantivy/fastfield/type.Result.html" title="type tantivy::fastfield::Result">Result</a>&lt;<a class="struct" href="../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a>&lt;Item&gt;&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#112-127' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Accessor to the <code>MultiValueIntFastFieldReader</code> associated to a given <code>Field</code>.
May panick if the field is not a multivalued fastfield of the type <code>Item</code>.</p>
</div><h4 id='method.facet_reader' class="method"><span id='facet_reader.v' class='invisible'><code>pub fn <a href='#method.facet_reader' class='fnname'>facet_reader</a>(&amp;self, field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -&gt; <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="struct" href="../tantivy/fastfield/struct.FacetReader.html" title="struct tantivy::fastfield::FacetReader">FacetReader</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#130-151' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Accessor to the <code>FacetReader</code> associated to a given <code>Field</code>.</p>
</div><h4 id='method.multi_value_reader' class="method"><span id='multi_value_reader.v' class='invisible'><code>pub fn <a href='#method.multi_value_reader' class='fnname'>multi_value_reader</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -&gt; <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="struct" href="../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#134-145' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Accessor to the <code>MultiValueIntFastFieldReader</code> associated to a given <code>Field</code>.</p>
</div><h4 id='method.get_fieldnorms_reader' class="method"><span id='get_fieldnorms_reader.v' class='invisible'><code>pub fn <a href='#method.get_fieldnorms_reader' class='fnname'>get_fieldnorms_reader</a>(&amp;self, field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../tantivy/fastfield/struct.U64FastFieldReader.html" title="struct tantivy::fastfield::U64FastFieldReader">U64FastFieldReader</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#155-159' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.get_fieldnorms_reader' class="method"><span id='get_fieldnorms_reader.v' class='invisible'><code>pub fn <a href='#method.get_fieldnorms_reader' class='fnname'>get_fieldnorms_reader</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>&gt;&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#161-165' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Accessor to the segment's <code>Field norms</code>'s reader.</p>
<p>Field norms are the length (in tokens) of the fields.
It is used in the computation of the [TfIdf]
(https://fulmicoton.gitbooks.io/tantivy-doc/content/tfidf.html).</p>
<p>They are simply stored as a fast field, serialized in
the <code>.fieldnorm</code> file of the segment.</p>
</div><h4 id='method.get_store_reader' class="method"><span id='get_store_reader.v' class='invisible'><code>pub fn <a href='#method.get_store_reader' class='fnname'>get_store_reader</a>(&amp;self) -&gt; &amp;<a class="struct" href="../tantivy/store/struct.StoreReader.html" title="struct tantivy::store::StoreReader">StoreReader</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#162-164' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.get_store_reader' class="method"><span id='get_store_reader.v' class='invisible'><code>pub fn <a href='#method.get_store_reader' class='fnname'>get_store_reader</a>(&amp;self) -&gt; &amp;<a class="struct" href="../tantivy/store/struct.StoreReader.html" title="struct tantivy::store::StoreReader">StoreReader</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#168-170' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Accessor to the segment's <code>StoreReader</code>.</p>
</div><h4 id='method.open' class="method"><span id='open.v' class='invisible'><code>pub fn <a href='#method.open' class='fnname'>open</a>(segment: &amp;<a class="struct" href="../tantivy/struct.Segment.html" title="struct tantivy::Segment">Segment</a>) -&gt; <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="struct" href="../tantivy/struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#167-212' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.open' class="method"><span id='open.v' class='invisible'><code>pub fn <a href='#method.open' class='fnname'>open</a>(segment: &amp;<a class="struct" href="../tantivy/struct.Segment.html" title="struct tantivy::Segment">Segment</a>) -&gt; <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="struct" href="../tantivy/struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#173-218' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Open a new segment for reading.</p>
</div><h4 id='method.inverted_index' class="method"><span id='inverted_index.v' class='invisible'><code>pub fn <a href='#method.inverted_index' class='fnname'>inverted_index</a>(&amp;self, field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/arc/struct.Arc.html" title="struct alloc::arc::Arc">Arc</a>&lt;<a class="struct" href="../tantivy/struct.InvertedIndexReader.html" title="struct tantivy::InvertedIndexReader">InvertedIndexReader</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#219-262' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.inverted_index' class="method"><span id='inverted_index.v' class='invisible'><code>pub fn <a href='#method.inverted_index' class='fnname'>inverted_index</a>(&amp;self, field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/arc/struct.Arc.html" title="struct alloc::arc::Arc">Arc</a>&lt;<a class="struct" href="../tantivy/struct.InvertedIndexReader.html" title="struct tantivy::InvertedIndexReader">InvertedIndexReader</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#225-268' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns a field reader associated to the field given in argument.</p>
<p>The field reader is in charge of iterating through the
term dictionary associated to a specific field,
and opening the posting list associated to any term.</p>
</div><h4 id='method.doc' class="method"><span id='doc.v' class='invisible'><code>pub fn <a href='#method.doc' class='fnname'>doc</a>(&amp;self, doc_id: <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>) -&gt; <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="struct" href="../tantivy/struct.Document.html" title="struct tantivy::Document">Document</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#268-270' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.doc' class="method"><span id='doc.v' class='invisible'><code>pub fn <a href='#method.doc' class='fnname'>doc</a>(&amp;self, doc_id: <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>) -&gt; <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a>&lt;<a class="struct" href="../tantivy/struct.Document.html" title="struct tantivy::Document">Document</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#274-276' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns the document (or to be accurate, its stored field)
bearing the given doc id.
This method is slow and should seldom be called from
within a collector.</p>
</div><h4 id='method.segment_id' class="method"><span id='segment_id.v' class='invisible'><code>pub fn <a href='#method.segment_id' class='fnname'>segment_id</a>(&amp;self) -&gt; <a class="struct" href="../tantivy/struct.SegmentId.html" title="struct tantivy::SegmentId">SegmentId</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#273-275' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.segment_id' class="method"><span id='segment_id.v' class='invisible'><code>pub fn <a href='#method.segment_id' class='fnname'>segment_id</a>(&amp;self) -&gt; <a class="struct" href="../tantivy/struct.SegmentId.html" title="struct tantivy::SegmentId">SegmentId</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#279-281' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns the segment id</p>
</div><h4 id='method.delete_bitset' class="method"><span id='delete_bitset.v' class='invisible'><code>pub fn <a href='#method.delete_bitset' class='fnname'>delete_bitset</a>(&amp;self) -&gt; &amp;<a class="struct" href="../tantivy/fastfield/struct.DeleteBitSet.html" title="struct tantivy::fastfield::DeleteBitSet">DeleteBitSet</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#279-281' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.delete_bitset' class="method"><span id='delete_bitset.v' class='invisible'><code>pub fn <a href='#method.delete_bitset' class='fnname'>delete_bitset</a>(&amp;self) -&gt; &amp;<a class="struct" href="../tantivy/fastfield/struct.DeleteBitSet.html" title="struct tantivy::fastfield::DeleteBitSet">DeleteBitSet</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#285-287' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns the bitset representing
the documents that have been deleted.</p>
</div><h4 id='method.is_deleted' class="method"><span id='is_deleted.v' class='invisible'><code>pub fn <a href='#method.is_deleted' class='fnname'>is_deleted</a>(&amp;self, doc: <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#285-287' title='goto source code'>[src]</a></span></h4>
</div><h4 id='method.is_deleted' class="method"><span id='is_deleted.v' class='invisible'><code>pub fn <a href='#method.is_deleted' class='fnname'>is_deleted</a>(&amp;self, doc: <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#291-293' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns true iff the <code>doc</code> is marked
as deleted.</p>
</div></div>
<h2 id='implementations' class='small-section-header'>
Trait Implementations<a href='#implementations' class='anchor'></a>
</h2>
<h3 id='impl-Clone' class='impl'><span class='in-band'><code>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="../tantivy/struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a></code><a href='#impl-Clone' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#42' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.clone' class="method"><span id='clone.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone' class='fnname'>clone</a>(&amp;self) -&gt; <a class="struct" href="../tantivy/struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#42' title='goto source code'>[src]</a></span></h4>
<h3 id='impl-Clone' class='impl'><span class='in-band'><code>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="../tantivy/struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a></code><a href='#impl-Clone' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#43' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.clone' class="method"><span id='clone.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone' class='fnname'>clone</a>(&amp;self) -&gt; <a class="struct" href="../tantivy/struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#43' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p>
</div><h4 id='method.clone_from' class="method"><span id='clone_from.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from' class='fnname'>clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>Self)</code></span><span class='out-of-band'><div class='ghost'></div><div class='since' title='Stable since Rust version 1.0.0'>1.0.0</div><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/clone.rs.html#112-114' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p>
</div></div><h3 id='impl-Debug' class='impl'><span class='in-band'><code>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="../tantivy/struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a></code><a href='#impl-Debug' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#290-294' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.fmt' class="method"><span id='fmt.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt' class='fnname'>fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#291-293' title='goto source code'>[src]</a></span></h4>
</div></div><h3 id='impl-Debug' class='impl'><span class='in-band'><code>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="../tantivy/struct.SegmentReader.html" title="struct tantivy::SegmentReader">SegmentReader</a></code><a href='#impl-Debug' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#296-300' title='goto source code'>[src]</a></span></h3>
<div class='impl-items'><h4 id='method.fmt' class="method"><span id='fmt.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt' class='fnname'>fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>) -&gt; <a class="type" href="https://doc.rust-lang.org/nightly/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/tantivy/core/segment_reader.rs.html#297-299' title='goto source code'>[src]</a></span></h4>
<div class='docblock'><p>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></p>
</div></div></section>
<section id='search' class="content hidden"></section>