[−][src]Struct ieql::query::query::CompiledQueryGroup
Represents a group of compiled queries. This type has several
internal optimizations that makes scanning using a
CompiledQueryGroup
far more efficient than scanning using
compiled queries alone.
Namely, this type provides:
- proper multithreading support
- runtime optimizations for query execution
For information about how each of these optimizations
are implemented, see the documentation for
scan_concurrently()
and the various fields.
There are few cases—if not none at all—when a CompiledQueryGroup
should be mutable.
Fields
queries: Vec<CompiledQuery>
Contains the compiled queries that make up the compiled query group.
Importantly, this vector is highly ordered, meaning that changing the order of this array will lead to the entire scanning system breaking.
regex_collected: RegexSet
Contains every single RegEx pattern of every query's triggers.
This highly efficient RegEx matching system
allows for the CompiledQueryGroup
's scanning mechanism
to know in advance which of its queries will potentially
match on a document, without having to execute every
individual query.
regex_collected_query_index: Vec<usize>
This index relates every RegEx pattern in regex_collected
to its source query in queries
.
For example, the 1st element of this vector corresponds to the
1st RegEx pattern in regex_collected
and denotes the index
of its source query in queries
.
always_run_queries: Vec<CompiledQuery>
Contains the queries that cannot be optimized using the methods above, and therefore must be run on every document.
These queries typically are those that contain some sort of inverse boolean operator, therefore making it possible for the query to match even when none of its triggers match.
Queries that have a threshold with a requires
value of 0
and queries whose ScopeContent
doesn't match the majority
are also included here as unoptimizable.
regex_feed: ScopeContent
The type of content that should be fed to the RegEx patterns
in regex_collected
.
Trait Implementations
impl Clone for CompiledQueryGroup
[src]
fn clone(&self) -> CompiledQueryGroup
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl CompilableTo<CompiledQueryGroup> for QueryGroup
[src]
fn compile(&self) -> Result<CompiledQueryGroup, Issue>
[src]
Compiles the QueryGroup
into a CompiledQueryGroup
. Like
all compilation operations, this is expensive.
impl From<CompiledQuery> for CompiledQueryGroup
[src]
fn from(query: CompiledQuery) -> CompiledQueryGroup
[src]
This helper function creates a CompiledQueryGroup
for single queries, enabling multithreading support for
single queries without any significant 'hacks.'
impl Scanner for CompiledQueryGroup
[src]
fn scan_single(&self, document: &CompiledDocument) -> OutputBatch
[src]
fn scan_batch(&self, documents: &CompiledDocumentBatch) -> OutputBatch
[src]
fn scan_concurrently(&self, threads: u8) -> AsyncScanInterface
[src]
Auto Trait Implementations
impl !RefUnwindSafe for CompiledQueryGroup
impl Send for CompiledQueryGroup
impl Sync for CompiledQueryGroup
impl Unpin for CompiledQueryGroup
impl UnwindSafe for CompiledQueryGroup
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,