mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-05-25 04:30:40 +00:00
Automatic Travis documentation build
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
10
master/implementors/tantivy/fastfield/trait.FastValue.js
Normal file
10
master/implementors/tantivy/fastfield/trait.FastValue.js
Normal 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
@@ -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"><</span><span class="ident">u64</span><span class="op">></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"><</span><span class="ident">U64FastFieldReader</span><span class="op">></span>,
|
||||
<span class="ident">ff_reader</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">u64</span><span class="op">>></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">&</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">&</span><span class="ident">SegmentReader</span>) <span class="op">-></span> <span class="prelude-ty">Result</span><span class="op"><</span>()<span class="op">></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>(())
|
||||
}
|
||||
|
||||
|
||||
@@ -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">&</span><span class="self">self</span>, <span class="ident">idx</span>: <span class="ident">usize</span>) <span class="op">-></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">&</span>[<span class="ident">u8</span>] <span class="op">=</span> <span class="kw-2">&</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">>></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">&</span> <span class="ident">mask</span>)
|
||||
<span class="ident">val_shifted</span> <span class="op">&</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"><=</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">>></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">&</span> <span class="ident">mask</span>)
|
||||
<span class="ident">val_shifted</span> <span class="op">&</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">&</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">&</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">&</span>[<span class="ident">u8</span>] <span class="op">=</span> <span class="kw-2">&</span><span class="kw-2">*</span><span class="self">self</span>.<span class="ident">data</span>;
|
||||
|
||||
@@ -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"><</span><span class="ident">TFastFieldReader</span>: <span class="ident">FastFieldReader</span><span class="op">></span>(
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">fast_field_reader</span><span class="op"><</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">></span>(
|
||||
<span class="kw-2">&</span><span class="self">self</span>,
|
||||
<span class="ident">field</span>: <span class="ident">Field</span>,
|
||||
) <span class="op">-></span> <span class="ident">fastfield</span>::<span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">TFastFieldReader</span><span class="op">></span> {
|
||||
) <span class="op">-></span> <span class="ident">fastfield</span>::<span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">Item</span><span class="op">>></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"><</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">></span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">field</span>: <span class="ident">Field</span>) <span class="op">-></span> <span class="ident">fastfield</span>::<span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">MultiValueIntFastFieldReader</span><span class="op"><</span><span class="ident">Item</span><span class="op">>></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">"The field \"{}\" 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">&</span><span class="self">self</span>, <span class="ident">field</span>: <span class="ident">Field</span>) <span class="op">-></span> <span class="prelude-ty">Result</span><span class="op"><</span><span class="ident">MultiValueIntFastFieldReader</span><span class="op">></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's `Field norms`'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">&</span><span class="self">self</span>, <span class="ident">field</span>: <span class="ident">Field</span>) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">U64FastFieldReader</span><span class="op">></span> {
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_fieldnorms_reader</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">field</span>: <span class="ident">Field</span>) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">u64</span><span class="op">>></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's `StoreReader`.</span>
|
||||
|
||||
@@ -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">&</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">&</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>));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"><</span><span class="ident">u64</span><span class="op">></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"><</span><span class="ident">u64</span><span class="op">></span>,
|
||||
<span class="ident">term_dict</span>: <span class="ident">TermDictionaryImpl</span>,
|
||||
) <span class="op">-></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>
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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">-></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">&</span><span class="self">self</span>) <span class="op">-></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">&</span><span class="ident">FieldType</span>) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Cardinality</span><span class="op">></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">&</span><span class="self">self</span>) <span class="op">-></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">-></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">&</span><span class="self">self</span>) <span class="op">-></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">&</span><span class="self">self</span>) <span class="op">-></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">&</span><span class="ident">FieldType</span>) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Cardinality</span><span class="op">></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">=></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">=></span>
|
||||
<span class="prelude-val">Some</span>(<span class="ident">Cardinality</span>::<span class="ident">MultiValues</span>),
|
||||
_ <span class="op">=></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">-></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">&</span><span class="self">self</span>) <span class="op">-></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">&</span><span class="ident">FieldType</span>) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">Cardinality</span><span class="op">></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">=></span>
|
||||
<span class="ident">integer_options</span>.<span class="ident">get_fastfield_cardinality</span>(),
|
||||
_ <span class="op">=></span> <span class="prelude-val">None</span>,
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">fn</span> <span class="ident">as_u64</span>(<span class="kw-2">&</span><span class="self">self</span>) <span class="op">-></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">&</span><span class="ident">Value</span>) <span class="op">-></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">=></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">=></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">=></span> <span class="macro">panic</span><span class="macro">!</span>(<span class="string">"Expected a u64/i64 field, got {:?} "</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">&</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">&</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"><</span><span class="ident">u64</span><span class="op">></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">"test"</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">&</span><span class="ident">SCHEMA</span>);
|
||||
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&</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">&</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">&</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">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">13u64</span>));
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">14u64</span>));
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">2u64</span>));
|
||||
<span class="ident">fast_field_writers</span>
|
||||
.<span class="ident">serialize</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&</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">&</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"><</span><span class="ident">u64</span><span class="op">></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">"test"</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">&</span><span class="ident">SCHEMA</span>);
|
||||
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&</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">&</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">&</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">&</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">&</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">&</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">&</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">&</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">&</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">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">4u64</span>));
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></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">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">3_052u64</span>));
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">9_002u64</span>));
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">15_001u64</span>));
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">777u64</span>));
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">1_002u64</span>));
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">1_501u64</span>));
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">215u64</span>));
|
||||
<span class="ident">fast_field_writers</span>
|
||||
.<span class="ident">serialize</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&</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">&</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"><</span><span class="ident">u64</span><span class="op">></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">&</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">&</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">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="number">100_000u64</span>));
|
||||
}
|
||||
<span class="ident">fast_field_writers</span>
|
||||
.<span class="ident">serialize</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&</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">&</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"><</span><span class="ident">u64</span><span class="op">></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">&</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">&</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">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></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">&</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">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></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">&</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&</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">&</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"><</span><span class="ident">u64</span><span class="op">></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">&</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"><</span><span class="ident">i64</span><span class="op">></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">&</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">&</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"><</span><span class="ident">i64</span><span class="op">></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">"test"</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">&</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">&</span><span class="ident">permutation</span> {
|
||||
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&</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">&</span><span class="ident">x</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">permutation</span> {
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="ident">x</span>));
|
||||
}
|
||||
<span class="ident">fast_field_writers</span>
|
||||
.<span class="ident">serialize</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&</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">&</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">&</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"><</span><span class="ident">u64</span><span class="op">></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">"test"</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">&</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">&</span><span class="ident">permutation</span> {
|
||||
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&</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">&</span><span class="ident">x</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">permutation</span> {
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="ident">x</span>));
|
||||
}
|
||||
<span class="ident">fast_field_writers</span>
|
||||
.<span class="ident">serialize</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&</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">&</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">&</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"><</span><span class="ident">u64</span><span class="op">></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">"test"</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">&</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">&</span><span class="ident">permutation</span> {
|
||||
<span class="ident">add_single_field_doc</span>(<span class="kw-2">&</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">&</span><span class="ident">x</span> <span class="kw">in</span> <span class="kw-2">&</span><span class="ident">permutation</span> {
|
||||
<span class="ident">fast_field_writers</span>.<span class="ident">add_document</span>(<span class="kw-2">&</span><span class="macro">doc</span><span class="macro">!</span>(<span class="kw-2">*</span><span class="ident">FIELD</span><span class="op">=></span><span class="ident">x</span>));
|
||||
}
|
||||
<span class="ident">fast_field_writers</span>
|
||||
.<span class="ident">serialize</span>(<span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">serializer</span>, <span class="kw-2">&</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">&</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">&</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"><</span><span class="ident">u64</span><span class="op">></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>);
|
||||
|
||||
@@ -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">"multifield"</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">=></span><span class="number">1u64</span>, <span class="ident">field</span><span class="op">=></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">=></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">=></span><span class="number">5u64</span>, <span class="ident">field</span><span class="op">=></span><span class="number">20u64</span>,<span class="ident">field</span><span class="op">=></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"><</span><span class="ident">u64</span><span class="op">></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">&</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">&</span><span class="ident">vals</span>, <span class="kw-2">&</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">&</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">&</span><span class="ident">vals</span>, <span class="kw-2">&</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">&</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">"multifield"</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">=></span> <span class="number">1i64</span>, <span class="ident">field</span> <span class="op">=></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">=></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">=></span> <span class="op">-</span><span class="number">5i64</span>, <span class="ident">field</span> <span class="op">=></span> <span class="op">-</span><span class="number">20i64</span>, <span class="ident">field</span><span class="op">=></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"><</span><span class="ident">i64</span><span class="op">></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">&</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">&</span><span class="ident">vals</span>, <span class="kw-2">&</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">&</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">&</span><span class="ident">vals</span>, <span class="kw-2">&</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">&</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">&</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">&</span><span class="ident">vals</span>, <span class="kw-2">&</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>
|
||||
|
||||
|
||||
@@ -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"><</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">></span> {
|
||||
<span class="ident">idx_reader</span>: <span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>,
|
||||
<span class="ident">vals_reader</span>: <span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">Item</span><span class="op">></span>
|
||||
}
|
||||
|
||||
<span class="kw">impl</span> <span class="ident">MultiValueIntFastFieldReader</span> {
|
||||
<span class="kw">impl</span><span class="op"><</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">></span> <span class="ident">MultiValueIntFastFieldReader</span><span class="op"><</span><span class="ident">Item</span><span class="op">></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">-></span> <span class="ident">MultiValueIntFastFieldReader</span> {
|
||||
<span class="ident">idx_reader</span>: <span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>,
|
||||
<span class="ident">vals_reader</span>: <span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">Item</span><span class="op">></span>,
|
||||
) <span class="op">-></span> <span class="ident">MultiValueIntFastFieldReader</span><span class="op"><</span><span class="ident">Item</span><span class="op">></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">&</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">&</span><span class="kw-2">mut</span> <span class="ident">Vec</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>) {
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_vals</span>(<span class="kw-2">&</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">&</span><span class="kw-2">mut</span> <span class="ident">Vec</span><span class="op"><</span><span class="ident">Item</span><span class="op">></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">&</span><span class="kw-2">mut</span> <span class="ident">vals</span>[..]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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"><</span><span class="ident">UnorderedTermId</span><span class="op">></span>,
|
||||
<span class="ident">vals</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>,
|
||||
<span class="ident">doc_index</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">u64</span><span class="op">></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">-></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">-></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">&</span><span class="kw-2">mut</span> <span class="self">self</span>, <span class="ident">doc</span>: <span class="kw-2">&</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`'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">&</span><span class="self">self</span>,
|
||||
<span class="ident">serializer</span>: <span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">FastFieldSerializer</span>,
|
||||
<span class="ident">mapping</span>: <span class="kw-2">&</span><span class="ident">HashMap</span><span class="op"><</span><span class="ident">UnorderedTermId</span>, <span class="ident">usize</span><span class="op">></span>,
|
||||
<span class="ident">mapping_opt</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="kw-2">&</span><span class="ident">HashMap</span><span class="op"><</span><span class="ident">UnorderedTermId</span>, <span class="ident">usize</span><span class="op">>></span>,
|
||||
) <span class="op">-></span> <span class="ident">io</span>::<span class="prelude-ty">Result</span><span class="op"><</span>()<span class="op">></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">&</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">"Missing term ordinal"</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"><</span>_<span class="op">></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">=></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">&</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">"Missing term ordinal"</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">=></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">&</span><span class="ident">val</span> <span class="kw">in</span> <span class="kw-2">&</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>;
|
||||
}
|
||||
|
||||
@@ -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"><</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">></span> {
|
||||
<span class="ident">bit_unpacker</span>: <span class="ident">BitUnpacker</span><span class="op"><</span><span class="ident">OwningRef</span><span class="op"><</span><span class="ident">ReadOnlySource</span>, [<span class="ident">u8</span>]<span class="op">>></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"><</span><span class="ident">Item</span><span class="op">></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">&</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="ident">DocId</span>) <span class="op">-></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's `maxdoc`.</span>
|
||||
<span class="kw">fn</span> <span class="ident">get_range</span>(<span class="kw-2">&</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">&</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"><</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">></span> <span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">Item</span><span class="op">></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">-></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">&</span><span class="ident">FieldType</span>) <span class="op">-></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"><</span><span class="ident">OwningRef</span><span class="op"><</span><span class="ident">ReadOnlySource</span>, [<span class="ident">u8</span>]<span class="op">>></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">&</span><span class="self">self</span>) <span class="op">-></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">&</span><span class="self">self</span>) <span class="op">-></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">&</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="ident">DocId</span>) <span class="op">-></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">&</span><span class="ident">FieldType</span>) <span class="op">-></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">=></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">=></span> <span class="bool-val">true</span>,
|
||||
_ <span class="op">=></span> <span class="bool-val">false</span>,
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">fn</span> <span class="ident">get_range</span>(<span class="kw-2">&</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">&</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">-></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">-></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">&</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">&</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="ident">DocId</span>) <span class="op">-></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's `maxdoc`.</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">get_range</span>(<span class="kw-2">&</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">&</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">&</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">&</span><span class="self">self</span>) <span class="op">-></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">&</span><span class="self">self</span>) <span class="op">-></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"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">u64</span><span class="op">>></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"><</span><span class="ident">u64</span><span class="op">></span>) <span class="op">-></span> <span class="ident">U64FastFieldReader</span> {
|
||||
<span class="kw">impl</span><span class="op"><</span><span class="ident">Item</span>: <span class="ident">FastValue</span><span class="op">></span> <span class="ident">From</span><span class="op"><</span><span class="ident">Vec</span><span class="op"><</span><span class="ident">Item</span><span class="op">>></span> <span class="kw">for</span> <span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">Item</span><span class="op">></span> {
|
||||
<span class="kw">fn</span> <span class="ident">from</span>(<span class="ident">vals</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Item</span><span class="op">></span>) <span class="op">-></span> <span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">Item</span><span class="op">></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">"field"</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">"With a RAMDirectory, this should never fail."</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">"Failed to open the file"</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">&</span><span class="ident">source</span>).<span class="ident">expect</span>(<span class="string">"Failed to read the composite file"</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">"File component not found"</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">&</span><span class="self">self</span>) <span class="op">-></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">&</span><span class="self">self</span>) <span class="op">-></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's `maxdoc`.</span>
|
||||
<span class="kw">fn</span> <span class="ident">get</span>(<span class="kw-2">&</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="ident">DocId</span>) <span class="op">-></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's `maxdoc`.</span>
|
||||
<span class="kw">fn</span> <span class="ident">get_range</span>(<span class="kw-2">&</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">&</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">&</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">-></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">&</span><span class="ident">FieldType</span>) <span class="op">-></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">=></span> <span class="ident">integer_options</span>.<span class="ident">is_fast</span>(),
|
||||
_ <span class="op">=></span> <span class="bool-val">false</span>,
|
||||
}
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
</section>
|
||||
<section id='search' class="content hidden"></section>
|
||||
|
||||
@@ -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>
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -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">=></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">=></span> {}
|
||||
}
|
||||
}
|
||||
<span class="ident">FieldType</span>::<span class="ident">HierarchicalFacet</span> <span class="op">=></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">=></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">&</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">&</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">&</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">"Term ordinal mapping missing for {:?}"</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">&</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">-></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">&</span><span class="self">self</span>, <span class="ident">doc</span>: <span class="kw-2">&</span><span class="ident">Document</span>) <span class="op">-></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">=></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">=></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">=></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">=></span> <span class="macro">panic</span><span class="macro">!</span>(<span class="string">"Expected a u64field, got {:?} "</span>, <span class="ident">v</span>),
|
||||
},
|
||||
<span class="prelude-val">Some</span>(<span class="ident">v</span>) <span class="op">=></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">=></span> <span class="self">self</span>.<span class="ident">val_if_missing</span>,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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">&</span><span class="ident">U64FastFieldReader</span>,
|
||||
<span class="ident">u64_reader</span>: <span class="kw-2">&</span><span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">u64</span><span class="op">></span>,
|
||||
<span class="ident">max_doc</span>: <span class="ident">DocId</span>,
|
||||
<span class="ident">delete_bitset</span>: <span class="kw-2">&</span><span class="ident">DeleteBitSet</span>,
|
||||
) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span>(<span class="ident">u64</span>, <span class="ident">u64</span>)<span class="op">></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">&</span><span class="ident">SegmentReader</span>,
|
||||
<span class="ident">field</span>: <span class="ident">Field</span>,
|
||||
) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">U64FastFieldReader</span><span class="op">></span> {
|
||||
) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">u64</span><span class="op">>></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">&</span><span class="ident">SegmentReader</span>,
|
||||
<span class="ident">field</span>: <span class="ident">Field</span>,
|
||||
) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">U64FastFieldReader</span><span class="op">></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">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">u64</span><span class="op">>></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">&</span><span class="self">self</span>,
|
||||
<span class="ident">fields</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Field</span><span class="op">></span>,
|
||||
<span class="ident">field_reader_extractor</span>: <span class="kw-2">&</span><span class="ident">Fn</span>(<span class="kw-2">&</span><span class="ident">SegmentReader</span>, <span class="ident">Field</span>) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">U64FastFieldReader</span><span class="op">></span>,
|
||||
<span class="ident">field_reader_extractor</span>: <span class="kw-2">&</span><span class="ident">Fn</span>(<span class="kw-2">&</span><span class="ident">SegmentReader</span>, <span class="ident">Field</span>) <span class="op">-></span> <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">u64</span><span class="op">>></span>,
|
||||
<span class="ident">fast_field_serializer</span>: <span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">FastFieldSerializer</span>,
|
||||
) <span class="op">-></span> <span class="prelude-ty">Result</span><span class="op"><</span>()<span class="op">></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"><</span><span class="ident">u64</span><span class="op">></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"><</span><span class="ident">u64</span><span class="op">></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">&</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">"g"</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"><</span><span class="ident">u64</span><span class="op">></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">&</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">"g"</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"><</span><span class="ident">u64</span><span class="op">></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">&</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">"g"</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"><</span><span class="ident">u64</span><span class="op">></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>);
|
||||
|
||||
@@ -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">&</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>)
|
||||
|
||||
@@ -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">"http://fulmicoton.com/tantivy-logo/tantivy-logo.png"</span>)]</span>
|
||||
<span class="attribute">#![<span class="ident">cfg_attr</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"cargo-clippy"</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">&</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"><</span><span class="ident">U64FastFieldReader</span><span class="op">></span>(<span class="ident">text_field</span>);
|
||||
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>::<span class="op"><</span><span class="ident">u64</span><span class="op">></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"><</span><span class="ident">U64FastFieldReader</span><span class="op">></span>(<span class="ident">stored_int_field</span>);
|
||||
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>::<span class="op"><</span><span class="ident">u64</span><span class="op">></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"><</span><span class="ident">U64FastFieldReader</span><span class="op">></span>(<span class="ident">fast_field_signed</span>);
|
||||
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>::<span class="op"><</span><span class="ident">u64</span><span class="op">></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"><</span><span class="ident">I64FastFieldReader</span><span class="op">></span>(<span class="ident">fast_field_signed</span>);
|
||||
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>::<span class="op"><</span><span class="ident">i64</span><span class="op">></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"><</span><span class="ident">I64FastFieldReader</span><span class="op">></span>(<span class="ident">fast_field_signed</span>);
|
||||
<span class="ident">segment_reader</span>.<span class="ident">fast_field_reader</span>::<span class="op"><</span><span class="ident">i64</span><span class="op">></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>)
|
||||
|
||||
@@ -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">=></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">=></span> {
|
||||
($(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">field</span>:<span class="ident">expr</span> <span class="op">=></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">=></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>();
|
||||
$(
|
||||
|
||||
@@ -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>};
|
||||
|
||||
@@ -528,7 +528,7 @@
|
||||
<span class="ident">heap</span>: <span class="kw-2">&</span><span class="ident">Heap</span>,
|
||||
) <span class="op">-></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">>=</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">&</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">&</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>() {
|
||||
|
||||
@@ -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">&</span>[<span class="number">1</span>]);
|
||||
|
||||
@@ -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"><</span><span class="ident">U64FastFieldReader</span><span class="op">></span>,
|
||||
<span class="kw">pub</span> <span class="ident">fieldnorm_reader_opt</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">FastFieldReader</span><span class="op"><</span><span class="ident">u64</span><span class="op">>></span>,
|
||||
<span class="kw">pub</span> <span class="ident">postings</span>: <span class="ident">SegmentPostings</span>,
|
||||
}
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
|
||||
[<span class='inner'>−</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>
|
||||
|
||||
10
master/tantivy/fastfield/FastValue.t.html
Normal file
10
master/tantivy/fastfield/FastValue.t.html
Normal 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>
|
||||
@@ -59,7 +59,7 @@
|
||||
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
|
||||
[<span class='inner'>−</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>
|
||||
|
||||
10
master/tantivy/fastfield/reader/struct.FastFieldReader.html
Normal file
10
master/tantivy/fastfield/reader/struct.FastFieldReader.html
Normal 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>
|
||||
@@ -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."]]});
|
||||
@@ -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> term_ords: <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a>, <br> term_dict: <a class="struct" href="../../tantivy/termdict/struct.TermDictionaryImpl.html" title="struct tantivy::termdict::TermDictionaryImpl">TermDictionaryImpl</a><br>) -> <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> term_ords: <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>>, <br> term_dict: <a class="struct" href="../../tantivy/termdict/struct.TermDictionaryImpl.html" title="struct tantivy::termdict::TermDictionaryImpl">TermDictionaryImpl</a><br>) -> <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>
|
||||
|
||||
171
master/tantivy/fastfield/struct.FastFieldReader.html
Normal file
171
master/tantivy/fastfield/struct.FastFieldReader.html
Normal 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">☰</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<Vec<Item>></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'>−</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<Item: <a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>> { /* 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<Item: <a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>> <a class="struct" href="../../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a><Item></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>) -> 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>(&self, doc: <a class="type" href="../../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>) -> 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>(&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">&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>(&self) -> 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>(&self) -> 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<Item: <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>> <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><Item></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>(&self) -> <a class="struct" href="../../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a><Item></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>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</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<Item: <a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>> <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a><<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Item>> for <a class="struct" href="../../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a><Item></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><Item>) -> <a class="struct" href="../../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a><Item></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>⏎</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>
|
||||
@@ -59,23 +59,23 @@
|
||||
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
|
||||
[<span class='inner'>−</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: &<a class="struct" href="../../tantivy/schema/struct.Schema.html" title="struct tantivy::schema::Schema">Schema</a>) -> <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: &<a class="struct" href="../../tantivy/schema/struct.Schema.html" title="struct tantivy::schema::Schema">Schema</a>) -> <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> &mut self, <br> field: <a class="struct" href="../../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&mut <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#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> &mut self, <br> field: <a class="struct" href="../../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&mut <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#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>(&mut self, doc: &<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>(&mut self, doc: &<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> &self, <br> serializer: &mut <a class="struct" href="../../tantivy/fastfield/struct.FastFieldSerializer.html" title="struct tantivy::fastfield::FastFieldSerializer">FastFieldSerializer</a>, <br> mapping: &<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><<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><<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>>><br>) -> <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>></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> &self, <br> serializer: &mut <a class="struct" href="../../tantivy/fastfield/struct.FastFieldSerializer.html" title="struct tantivy::fastfield::FastFieldSerializer">FastFieldSerializer</a>, <br> mapping: &<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><<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><<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>>><br>) -> <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>></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>(&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>(&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>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
|
||||
[<span class='inner'>−</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>) -> <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>) -> <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>(&self) -> <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>(&self) -> <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>(&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>(&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>(&mut self, doc: &<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>(&mut self, doc: &<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>(&self, serializer: &mut <a class="struct" href="../../tantivy/fastfield/struct.FastFieldSerializer.html" title="struct tantivy::fastfield::FastFieldSerializer">FastFieldSerializer</a>) -> <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>></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>(&self, serializer: &mut <a class="struct" href="../../tantivy/fastfield/struct.FastFieldSerializer.html" title="struct tantivy::fastfield::FastFieldSerializer">FastFieldSerializer</a>) -> <a class="type" href="https://doc.rust-lang.org/nightly/std/io/error/type.Result.html" title="type std::io::error::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>></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>
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
|
||||
[<span class='inner'>−</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<Item: <a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>> { /* 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>(&self, doc: <a class="type" href="../../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>, vals: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><<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/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<Item: <a class="trait" href="../../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>> <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a><Item></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>(&self, doc: <a class="type" href="../../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>, vals: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a><Item>)</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>(&self) -> <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<Item: <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>> <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><Item></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>(&self) -> <a class="struct" href="../../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a><Item></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>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</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>
|
||||
|
||||
168
master/tantivy/fastfield/trait.FastValue.html
Normal file
168
master/tantivy/fastfield/trait.FastValue.html
Normal 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">☰</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'>−</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>) -> Self;
|
||||
<div class='item-spacer'></div> fn <a href='#tymethod.to_u64' class='fnname'>to_u64</a>(&self) -> <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: &<a class="enum" href="../../tantivy/schema/enum.FieldType.html" title="enum tantivy::schema::FieldType">FieldType</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../tantivy/schema/enum.Cardinality.html" title="enum tantivy::schema::Cardinality">Cardinality</a>>;
|
||||
<div class='item-spacer'></div> fn <a href='#tymethod.as_u64' class='fnname'>as_u64</a>(&self) -> <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>) -> 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>(&self) -> <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: &<a class="enum" href="../../tantivy/schema/enum.FieldType.html" title="enum tantivy::schema::FieldType">FieldType</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../tantivy/schema/enum.Cardinality.html" title="enum tantivy::schema::Cardinality">Cardinality</a>></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>(&self) -> <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>) -> 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>(&self) -> <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>(&self) -> <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: &<a class="enum" href="../../tantivy/schema/enum.FieldType.html" title="enum tantivy::schema::FieldType">FieldType</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../tantivy/schema/enum.Cardinality.html" title="enum tantivy::schema::Cardinality">Cardinality</a>></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>) -> 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>(&self) -> <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: &<a class="enum" href="../../tantivy/schema/enum.FieldType.html" title="enum tantivy::schema::FieldType">FieldType</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="../../tantivy/schema/enum.Cardinality.html" title="enum tantivy::schema::Cardinality">Cardinality</a>></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>(&self) -> <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>⏎</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>
|
||||
@@ -59,7 +59,7 @@
|
||||
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
|
||||
[<span class='inner'>−</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>
|
||||
|
||||
@@ -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">=></span> { ... };
|
||||
($(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">field</span>:<span class="ident">ident</span> <span class="op">=></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">=></span> { ... };
|
||||
($(<span class="macro-nonterminal">$</span><span class="macro-nonterminal">field</span>:<span class="ident">expr</span> <span class="op">=></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">=></span> { ... };
|
||||
}</pre>
|
||||
<div class='docblock'><p><code>doc!</code> is a shortcut that helps building <code>Document</code>
|
||||
objects.</p>
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
<a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
|
||||
[<span class='inner'>−</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>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
<nav class="sidebar">
|
||||
<div class="sidebar-menu">☰</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'>−</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>(&self) -> <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>(&self) -> <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>(&self) -> <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>(&self) -> <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>(&self) -> <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>(&self) -> <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><TFastFieldReader: <a class="trait" href="../tantivy/fastfield/trait.FastFieldReader.html" title="trait tantivy::fastfield::FastFieldReader">FastFieldReader</a>>(<br> &self, <br> field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -> <a class="type" href="../tantivy/fastfield/type.Result.html" title="type tantivy::fastfield::Result">Result</a><TFastFieldReader></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><Item: <a class="trait" href="../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>>(<br> &self, <br> field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -> <a class="type" href="../tantivy/fastfield/type.Result.html" title="type tantivy::fastfield::Result">Result</a><<a class="struct" href="../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a><Item>></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 "fast".</p>
|
||||
@@ -97,50 +97,51 @@ is a u64 field indexed as "fast".</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>(&self, field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -> <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a><<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/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><Item: <a class="trait" href="../tantivy/fastfield/trait.FastValue.html" title="trait tantivy::fastfield::FastValue">FastValue</a>>(<br> &self, <br> field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -> <a class="type" href="../tantivy/fastfield/type.Result.html" title="type tantivy::fastfield::Result">Result</a><<a class="struct" href="../tantivy/fastfield/struct.MultiValueIntFastFieldReader.html" title="struct tantivy::fastfield::MultiValueIntFastFieldReader">MultiValueIntFastFieldReader</a><Item>></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>(&self, field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -> <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a><<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/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> &self, <br> field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -> <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a><<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/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>(&self, field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../tantivy/fastfield/struct.U64FastFieldReader.html" title="struct tantivy::fastfield::U64FastFieldReader">U64FastFieldReader</a>></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> &self, <br> field: <a class="struct" href="../tantivy/schema/struct.Field.html" title="struct tantivy::schema::Field">Field</a><br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="../tantivy/fastfield/struct.FastFieldReader.html" title="struct tantivy::fastfield::FastFieldReader">FastFieldReader</a><<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/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>(&self) -> &<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>(&self) -> &<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: &<a class="struct" href="../tantivy/struct.Segment.html" title="struct tantivy::Segment">Segment</a>) -> <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a><<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#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: &<a class="struct" href="../tantivy/struct.Segment.html" title="struct tantivy::Segment">Segment</a>) -> <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a><<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#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>(&self, field: <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/alloc/arc/struct.Arc.html" title="struct alloc::arc::Arc">Arc</a><<a class="struct" href="../tantivy/struct.InvertedIndexReader.html" title="struct tantivy::InvertedIndexReader">InvertedIndexReader</a>></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>(&self, field: <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/alloc/arc/struct.Arc.html" title="struct alloc::arc::Arc">Arc</a><<a class="struct" href="../tantivy/struct.InvertedIndexReader.html" title="struct tantivy::InvertedIndexReader">InvertedIndexReader</a>></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>(&self, doc_id: <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>) -> <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a><<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/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>(&self, doc_id: <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>) -> <a class="type" href="../tantivy/type.Result.html" title="type tantivy::Result">Result</a><<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/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>(&self) -> <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>(&self) -> <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>(&self) -> &<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>(&self) -> &<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>(&self, doc: <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>) -> <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>(&self, doc: <a class="type" href="../tantivy/type.DocId.html" title="type tantivy::DocId">DocId</a>) -> <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>(&self) -> <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>(&self) -> <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>(&mut self, source: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&</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>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>) -> <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>(&self, f: &mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>) -> <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>
|
||||
|
||||
Reference in New Issue
Block a user