diff --git a/Cargo.lock b/Cargo.lock index 5e62f31a6..f67fd530d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "ahash" @@ -80,7 +80,7 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.59.0", + "windows-sys", ] [[package]] @@ -91,7 +91,7 @@ checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" dependencies = [ "anstyle", "once_cell", - "windows-sys 0.59.0", + "windows-sys", ] [[package]] @@ -544,6 +544,16 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "erased-serde" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +dependencies = [ + "serde", + "typeid", +] + [[package]] name = "errno" version = "0.3.10" @@ -551,7 +561,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys", ] [[package]] @@ -591,12 +601,12 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "fs4" -version = "0.8.4" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e180ac76c23b45e767bd7ae9579bc0bb458618c4bc71835926e098e61d15f8" +checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4" dependencies = [ - "rustix 0.38.44", - "windows-sys 0.52.0", + "rustix", + "windows-sys", ] [[package]] @@ -790,6 +800,15 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "inventory" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" +dependencies = [ + "rustversion", +] + [[package]] name = "is-terminal" version = "0.4.16" @@ -798,7 +817,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ "hermit-abi 0.5.0", "libc", - "windows-sys 0.59.0", + "windows-sys", ] [[package]] @@ -865,12 +884,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - [[package]] name = "linux-raw-sys" version = "0.9.3" @@ -1047,6 +1060,15 @@ version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" +[[package]] +name = "ordered-float" +version = "5.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d" +dependencies = [ + "num-traits", +] + [[package]] name = "os_str_bytes" version = "6.6.1" @@ -1061,7 +1083,7 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "ownedbytes" -version = "0.7.0" +version = "0.9.0" dependencies = [ "stable_deref_trait", ] @@ -1365,19 +1387,6 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.9.0", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - [[package]] name = "rustix" version = "1.0.5" @@ -1387,8 +1396,8 @@ dependencies = [ "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys 0.9.3", - "windows-sys 0.59.0", + "linux-raw-sys", + "windows-sys", ] [[package]] @@ -1543,7 +1552,7 @@ dependencies = [ [[package]] name = "tantivy" -version = "0.23.0" +version = "0.25.0" dependencies = [ "aho-corasick", "arc-swap", @@ -1596,7 +1605,7 @@ dependencies = [ "tantivy-bitpacker", "tantivy-columnar", "tantivy-common", - "tantivy-fst", + "tantivy-fst 0.5.0 (git+https://github.com/paradedb/fst.git)", "tantivy-query-grammar", "tantivy-sstable", "tantivy-stacker", @@ -1605,6 +1614,7 @@ dependencies = [ "test-log", "thiserror", "time", + "typetag", "uuid", "winapi", "zstd", @@ -1612,7 +1622,7 @@ dependencies = [ [[package]] name = "tantivy-bitpacker" -version = "0.6.0" +version = "0.9.0" dependencies = [ "bitpacking", "proptest", @@ -1621,7 +1631,7 @@ dependencies = [ [[package]] name = "tantivy-columnar" -version = "0.3.0" +version = "0.6.0" dependencies = [ "binggan", "downcast-rs", @@ -1639,7 +1649,7 @@ dependencies = [ [[package]] name = "tantivy-common" -version = "0.7.0" +version = "0.10.0" dependencies = [ "async-trait", "binggan", @@ -1651,6 +1661,17 @@ dependencies = [ "time", ] +[[package]] +name = "tantivy-fst" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d60769b80ad7953d8a7b2c70cdfe722bbcdcac6bccc8ac934c40c034d866fc18" +dependencies = [ + "byteorder", + "regex-syntax 0.8.5", + "utf8-ranges", +] + [[package]] name = "tantivy-fst" version = "0.5.0" @@ -1663,14 +1684,18 @@ dependencies = [ [[package]] name = "tantivy-query-grammar" -version = "0.22.0" +version = "0.25.0" dependencies = [ + "fnv", "nom", + "ordered-float", + "serde", + "serde_json", ] [[package]] name = "tantivy-sstable" -version = "0.3.0" +version = "0.6.0" dependencies = [ "criterion", "futures-util", @@ -1680,13 +1705,13 @@ dependencies = [ "rand", "tantivy-bitpacker", "tantivy-common", - "tantivy-fst", + "tantivy-fst 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "zstd", ] [[package]] name = "tantivy-stacker" -version = "0.3.0" +version = "0.6.0" dependencies = [ "ahash", "binggan", @@ -1701,7 +1726,7 @@ dependencies = [ [[package]] name = "tantivy-tokenizer-api" -version = "0.3.0" +version = "0.6.0" dependencies = [ "serde", ] @@ -1715,8 +1740,8 @@ dependencies = [ "fastrand", "getrandom 0.3.2", "once_cell", - "rustix 1.0.5", - "windows-sys 0.59.0", + "rustix", + "windows-sys", ] [[package]] @@ -1875,6 +1900,36 @@ dependencies = [ "tracing-log", ] +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typetag" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf" +dependencies = [ + "erased-serde", + "inventory", + "once_cell", + "serde", + "typetag-impl", +] + +[[package]] +name = "typetag-impl" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "unarray" version = "0.1.4" @@ -1983,7 +2038,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys", ] [[package]] @@ -1992,15 +2047,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets", -] - [[package]] name = "windows-sys" version = "0.59.0" diff --git a/src/aggregation/mod.rs b/src/aggregation/mod.rs index 9c65bcee6..ddf60ea4c 100644 --- a/src/aggregation/mod.rs +++ b/src/aggregation/mod.rs @@ -199,9 +199,7 @@ fn parse_str_into_f64(value: &str) -> Result { /// deserialize Option from string or float pub(crate) fn deserialize_option_f64<'de, D>(deserializer: D) -> Result, D::Error> -where - D: Deserializer<'de>, -{ +where D: Deserializer<'de> { struct StringOrFloatVisitor; impl Visitor<'_> for StringOrFloatVisitor { @@ -212,44 +210,32 @@ where } fn visit_str(self, value: &str) -> Result - where - E: de::Error, - { + where E: de::Error { parse_str_into_f64(value).map(Some) } fn visit_f64(self, value: f64) -> Result - where - E: de::Error, - { + where E: de::Error { Ok(Some(value)) } fn visit_i64(self, value: i64) -> Result - where - E: de::Error, - { + where E: de::Error { Ok(Some(value as f64)) } fn visit_u64(self, value: u64) -> Result - where - E: de::Error, - { + where E: de::Error { Ok(Some(value as f64)) } fn visit_none(self) -> Result - where - E: de::Error, - { + where E: de::Error { Ok(None) } fn visit_unit(self) -> Result - where - E: de::Error, - { + where E: de::Error { Ok(None) } } @@ -259,9 +245,7 @@ where /// deserialize f64 from string or float pub(crate) fn deserialize_f64<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ +where D: Deserializer<'de> { struct StringOrFloatVisitor; impl Visitor<'_> for StringOrFloatVisitor { @@ -272,30 +256,22 @@ where } fn visit_str(self, value: &str) -> Result - where - E: de::Error, - { + where E: de::Error { parse_str_into_f64(value) } fn visit_f64(self, value: f64) -> Result - where - E: de::Error, - { + where E: de::Error { Ok(value) } fn visit_i64(self, value: i64) -> Result - where - E: de::Error, - { + where E: de::Error { Ok(value as f64) } fn visit_u64(self, value: u64) -> Result - where - E: de::Error, - { + where E: de::Error { Ok(value as f64) } } diff --git a/src/query/mod.rs b/src/query/mod.rs index d609a0402..f8fe3ac54 100644 --- a/src/query/mod.rs +++ b/src/query/mod.rs @@ -50,7 +50,9 @@ pub use self::explanation::Explanation; pub(crate) use self::fuzzy_query::DfaWrapper; pub use self::fuzzy_query::FuzzyTermQuery; pub use self::intersection::{intersect_scorers, Intersection}; -pub use self::more_like_this::{MoreLikeThisQuery, MoreLikeThisQueryBuilder}; +pub use self::more_like_this::{ + MoreLikeThis, MoreLikeThisQuery, MoreLikeThisQueryBuilder, ScoreTerm, +}; pub use self::phrase_prefix_query::PhrasePrefixQuery; pub use self::phrase_query::regex_phrase_query::{wildcard_query_to_regex_str, RegexPhraseQuery}; pub use self::phrase_query::PhraseQuery; diff --git a/src/query/more_like_this/mod.rs b/src/query/more_like_this/mod.rs index 277d2b9bb..943ddc69e 100644 --- a/src/query/more_like_this/mod.rs +++ b/src/query/more_like_this/mod.rs @@ -3,5 +3,5 @@ mod more_like_this; /// Module containing the different query implementations. mod query; -pub use self::more_like_this::MoreLikeThis; +pub use self::more_like_this::{MoreLikeThis, ScoreTerm}; pub use self::query::{MoreLikeThisQuery, MoreLikeThisQueryBuilder}; diff --git a/src/query/more_like_this/more_like_this.rs b/src/query/more_like_this/more_like_this.rs index 550abe5a3..7254842ad 100644 --- a/src/query/more_like_this/more_like_this.rs +++ b/src/query/more_like_this/more_like_this.rs @@ -11,7 +11,7 @@ use crate::tokenizer::{FacetTokenizer, PreTokenizedStream, TokenStream, Tokenize use crate::{DocAddress, Result, Searcher, TantivyDocument, TantivyError}; #[derive(Debug, PartialEq)] -struct ScoreTerm { +pub struct ScoreTerm { pub term: Term, pub score: f32, }