From 424cf0eaf6a1cc1f1dfe24dc20189d72bc9b8f74 Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Sun, 23 Apr 2017 16:22:28 +0800 Subject: [PATCH] Bumped version of tantivy to 0.3.1 --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- src/commands/merge.rs | 21 ++++++++++++++------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6306dee..8983f9e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -15,7 +15,7 @@ dependencies = [ "persistent 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", "staticfile 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "tantivy 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tantivy 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", "urlencoded 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "version 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -713,7 +713,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "tantivy" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "atomicwrites 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1042,7 +1042,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum solicit 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "172382bac9424588d7840732b250faeeef88942e37b6e35317dce98cafdd75b2" "checksum staticfile 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b28e731e7fcc67ce6aa4b53359d6922e193979175fbe85d5558fc71e692e4523" "checksum strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694" -"checksum tantivy 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b298586b33dd0997944c6f2a86a3c734baa30ddec5bdce271bc3d624bf6cf12" +"checksum tantivy 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "389ee9371eed5bec929bd1384ece956cb1e61764237d94bcab5cf4660faa8be5" "checksum tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6" "checksum tempfile 2.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3213fd2b7ed87e39306737ccfac04b1233b57a33ca64cfbf52f2ffaa2b765e2f" "checksum term_size 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2b6b55df3198cc93372e85dd2ed817f0e38ce8cc0f22eb32391bfad9c4bf209" diff --git a/Cargo.toml b/Cargo.toml index 2da5a32..1ab235a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ log = "0.3" futures = "0.1" env_logger = "0.3" version = "2" -tantivy = "0.3.0" +tantivy = "0.3.1" [[bin]] name = "tantivy" diff --git a/src/commands/merge.rs b/src/commands/merge.rs index 47da3c6..c83e445 100644 --- a/src/commands/merge.rs +++ b/src/commands/merge.rs @@ -1,6 +1,6 @@ extern crate tantivy; -use tantivy::{Index, SegmentMeta}; +use tantivy::Index; use std::path::PathBuf; use clap::ArgMatches; use futures::Future; @@ -14,18 +14,25 @@ fn error_msg(err: tantivy::Error) -> String { pub fn run_merge_cli(argmatch: &ArgMatches) -> Result<(), String> { let index_directory = PathBuf::from(argmatch.value_of("index").unwrap()); - let segment_meta = run_merge(index_directory).map_err(error_msg)?; - println!("Merge finished with segment meta {:?}", segment_meta); - Ok(()) + run_merge(index_directory).map_err(error_msg) + + // we rollback to force a gc. + } -fn run_merge(path: PathBuf) -> tantivy::Result { +fn run_merge(path: PathBuf) -> tantivy::Result<()> { let index = Index::open(&path)?; let segments = index.searchable_segment_ids()?; - index + let segment_meta = index .writer(HEAP_SIZE)? .merge(&segments) .wait() - .map_err(|_| tantivy::Error::ErrorInThread(String::from("Merge got cancelled"))) + .map_err(|_| tantivy::Error::ErrorInThread(String::from("Merge got cancelled"))); + println!("Merge finished with segment meta {:?}", segment_meta); + println!("Garbage collect irrelevant segments."); + Index::open(&path)? + .writer_with_num_threads(1, 40_000_000)? + .garbage_collect_files()?; + Ok(()) }