summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--Cargo.toml7
-rw-r--r--README.md7
-rw-r--r--src/collector/facet_collector.rs34
-rw-r--r--src/core/segment_component.rs4
-rw-r--r--src/indexer/index_writer.rs5
-rw-r--r--src/indexer/segment_updater.rs5
-rw-r--r--src/query/range_query.rs2
8 files changed, 40 insertions, 25 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c3802d5..3b946a3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@ Tantivy 0.5.2
- Removed C code. Tantivy is now pure Rust.
- BM25
- Approximate field norms encoded over 1 byte.
+- Compiles on stable rust
Tantivy 0.5.1
==========================
diff --git a/Cargo.toml b/Cargo.toml
index 9301a9e..847ff55 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -40,10 +40,7 @@ stable_deref_trait = "1.0.0"
rust-stemmers = "0.1.0"
downcast = { version="0.9" }
matches = "0.1"
-bitpacking = "0.3.1"
-
-[target.'cfg(windows)'.dependencies]
-winapi = "0.2"
+bitpacking = {path="../bitpacking"}
[dev-dependencies]
rand = "0.3"
@@ -57,10 +54,10 @@ debug-assertions = false
[features]
default = ["mmap"]
+simd = ["bitpacking/simd"]
streamdict = []
mmap = ["fst/mmap", "atomicwrites"]
-
[badges]
travis-ci = { repository = "tantivy-search/tantivy" }
diff --git a/README.md b/README.md
index 591798b..ad54223 100644
--- a/README.md
+++ b/README.md
@@ -43,15 +43,12 @@ It will walk you through getting a wikipedia search engine up and running in a f
## Development
-Tantivy requires Rust Nightly because it uses requires the features [`box_syntax`](https://doc.rust-lang.org/stable/unstable-book/language-features/box-syntax.html), [`optin_builtin_traits`](https://github.com/rust-lang/rfcs/blob/master/text/0019-opt-in-builtin-traits.md), [`conservative_impl_trait`](https://github.com/rust-lang/rfcs/blob/master/text/1522-conservative-impl-trait.md),
-and [simd](https://github.com/rust-lang/rust/issues/27731).
-
-
+Tantivy now compiles on stable rust.
To check out and run test, you can simply run :
git clone git@github.com:tantivy-search/tantivy.git
cd tantivy
- cargo +nightly build
+ cargo build
## Note on release build and performance
diff --git a/src/collector/facet_collector.rs b/src/collector/facet_collector.rs
index f94d343..bc0c46c 100644
--- a/src/collector/facet_collector.rs
+++ b/src/collector/facet_collector.rs
@@ -432,11 +432,29 @@ pub struct FacetCounts {
facet_counts: BTreeMap<Facet, u64>,
}
+
+use std::collections::btree_map;
+
+struct FacetChildIterator<'a> {
+ underlying: btree_map::Range<'a, Facet, u64>,
+}
+
+impl<'a> Iterator for FacetChildIterator<'a> {
+
+ type Item = (&'a Facet, u64);
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.underlying
+ .next()
+ .map(|(facet, count)| (facet, *count))
+ }
+}
+
+
impl FacetCounts {
- #[allow(needless_lifetimes)] //< compiler fails if we remove the lifetime
- pub fn get<'a, T>(&'a self, facet_from: T) -> impl Iterator<Item = (&'a Facet, u64)>
- where
- Facet: From<T>,
+
+ pub fn get<T>(&self, facet_from: T) -> FacetChildIterator //impl Iterator<Item = (&'a Facet, u64)>
+ where Facet: From<T>
{
let facet = Facet::from(facet_from);
let left_bound = Bound::Excluded(facet.clone());
@@ -448,10 +466,10 @@ impl FacetCounts {
let facet_after = Facet::from_encoded(facet_after_bytes);
Bound::Excluded(facet_after)
};
-
- self.facet_counts
- .range((left_bound, right_bound))
- .map(|(facet, count)| (facet, *count))
+ let underlying: btree_map::Range<_, _> = self.facet_counts.range((left_bound, right_bound));
+ FacetChildIterator {
+ underlying
+ }
}
pub fn top_k<T>(&self, facet: T, k: usize) -> Vec<(&Facet, u64)>
diff --git a/src/core/segment_component.rs b/src/core/segment_component.rs
index 58c25a0..d02a83b 100644
--- a/src/core/segment_component.rs
+++ b/src/core/segment_component.rs
@@ -1,3 +1,5 @@
+use std::slice;
+
/// Enum describing each component of a tantivy segment.
/// Each component is stored in its own file,
/// using the pattern `segment_uuid`.`component_extension`,
@@ -26,7 +28,7 @@ pub enum SegmentComponent {
impl SegmentComponent {
/// Iterates through the components.
- pub fn iterator() -> impl Iterator<Item = &'static SegmentComponent> {
+ pub fn iterator() -> slice::Iter<'static, SegmentComponent> {
static SEGMENT_COMPONENTS: [SegmentComponent; 7] = [
SegmentComponent::POSTINGS,
SegmentComponent::POSITIONS,
diff --git a/src/indexer/index_writer.rs b/src/indexer/index_writer.rs
index e882fac..75225fc 100644
--- a/src/indexer/index_writer.rs
+++ b/src/indexer/index_writer.rs
@@ -7,14 +7,13 @@ use core::SegmentId;
use core::SegmentMeta;
use core::SegmentReader;
use indexer::stamper::Stamper;
+use futures::sync::oneshot::Receiver;
use datastruct::stacker::Heap;
use directory::FileProtection;
use error::{Error, ErrorKind, Result, ResultExt};
use fastfield::write_delete_bitset;
use indexer::delete_queue::{DeleteCursor, DeleteQueue};
-use futures::Canceled;
use datastruct::stacker::hashmap::split_memory;
-use futures::Future;
use indexer::doc_opstamp_mapping::DocToOpstampMapping;
use indexer::MergePolicy;
use indexer::operation::DeleteOperation;
@@ -447,7 +446,7 @@ impl IndexWriter {
pub fn merge(
&mut self,
segment_ids: &[SegmentId],
- ) -> impl Future<Item = SegmentMeta, Error = Canceled> {
+ ) -> Receiver<SegmentMeta> {
self.segment_updater.start_merge(segment_ids)
}
diff --git a/src/indexer/segment_updater.rs b/src/indexer/segment_updater.rs
index 6853c42..83c68c9 100644
--- a/src/indexer/segment_updater.rs
+++ b/src/indexer/segment_updater.rs
@@ -10,8 +10,8 @@ use indexer::stamper::Stamper;
use error::{Error, ErrorKind, Result};
use futures_cpupool::CpuPool;
use futures::Future;
-use futures::Canceled;
use futures::oneshot;
+use futures::sync::oneshot::Receiver;
use directory::FileProtection;
use indexer::{DefaultMergePolicy, MergePolicy};
use indexer::index_writer::advance_deletes;
@@ -286,7 +286,7 @@ impl SegmentUpdater {
pub fn start_merge(
&self,
segment_ids: &[SegmentId],
- ) -> impl Future<Item = SegmentMeta, Error = Canceled> {
+ ) -> Receiver<SegmentMeta> {
self.0.segment_manager.start_merge(segment_ids);
let segment_updater_clone = self.clone();
@@ -361,6 +361,7 @@ impl SegmentUpdater {
let committed_merge_candidates = merge_policy.compute_merge_candidates(&committed_segments);
merge_candidates.extend_from_slice(&committed_merge_candidates[..]);
for MergeCandidate(segment_metas) in merge_candidates {
+ // TODO what do we do with the future here
self.start_merge(&segment_metas);
}
}
diff --git a/src/query/range_query.rs b/src/query/range_query.rs
index ab7cf88..9c85449 100644
--- a/src/query/range_query.rs
+++ b/src/query/range_query.rs
@@ -64,7 +64,7 @@ fn map_bound<TFrom, Transform: Fn(TFrom) -> Vec<u8>>(
/// let searcher = index.searcher();
///
/// let docs_in_the_sixties = RangeQuery::new_u64(year_field, 1960..1970);
-///
+///
/// let mut count_collector = CountCollector::default();
/// docs_in_the_sixties.search(&*searcher, &mut count_collector)?;
///