[package]
edition = "2024"
rust-version = "1.98.1"
name = "summa-core"
version = "2.0.0"
authors = ["izihawa"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Core async search engine library with WASM support"
homepage = "https://github.com/SpaceFrontiers/summa"
documentation = "https://docs.rs/summa-core"
readme = "README.md"
keywords = [
"search",
"full-text-search",
"indexing",
"ir",
]
categories = [
"database",
"text-processing",
]
license = "MIT"
repository = "https://github.com/SpaceFrontiers/summa"
resolver = "2"
[features]
cjk-dict = ["dep:lindera"]
default = ["sync"]
diagnostics = []
fst-index = ["dep:fst"]
http = [
"dep:reqwest",
"dep:instant",
]
metrics = ["dep:metrics"]
native = [
"fst-index",
"dep:tokio",
"dep:async-channel",
"dep:num_cpus",
"dep:rayon",
"dep:lasso",
"dep:memmap2",
"dep:tempfile",
"dep:libc",
"dep:uuid",
"dep:tokenizers",
"dep:hf-hub",
]
query-diagnostics = ["native"]
sync = ["native"]
wasm = [
"fst-index",
"dep:tokenizers",
]
[lib]
name = "summa_core"
path = "src/lib.rs"
[[example]]
name = "bm25_execution_benchmark"
path = "examples/bm25_execution_benchmark.rs"
[[example]]
name = "indexing_scratch_benchmark"
path = "examples/indexing_scratch_benchmark.rs"
[[example]]
name = "search_benchmark_game"
path = "examples/search_benchmark_game.rs"
test = true
required-features = ["sync"]
[[test]]
name = "benchmark_corpus_ids"
path = "tests/benchmark_corpus_ids.rs"
[[test]]
name = "benchmark_metrics"
path = "tests/benchmark_metrics.rs"
[[test]]
name = "compact_text_norms"
path = "tests/compact_text_norms.rs"
[[test]]
name = "corrupt_posting_content"
path = "tests/corrupt_posting_content.rs"
[[test]]
name = "corrupt_text_positions"
path = "tests/corrupt_text_positions.rs"
[[test]]
name = "corrupt_text_postings"
path = "tests/corrupt_text_postings.rs"
[[test]]
name = "dictionary_policy"
path = "tests/dictionary_policy.rs"
[[test]]
name = "exhaustive_text_collection"
path = "tests/exhaustive_text_collection.rs"
[[test]]
name = "filtered_windows"
path = "tests/filtered_windows.rs"
[[test]]
name = "impact_ranked_collection"
path = "tests/impact_ranked_collection.rs"
[[test]]
name = "index_writer_regressions"
path = "tests/index_writer_regressions.rs"
[[test]]
name = "phrase_requirements"
path = "tests/phrase_requirements.rs"
[[test]]
name = "pin_policy_environment"
path = "tests/pin_policy_environment.rs"
[[test]]
name = "portable_mutations"
path = "tests/portable_mutations.rs"
[[test]]
name = "posting_reader_resources"
path = "tests/posting_reader_resources.rs"
[[test]]
name = "primary_key_builder_forces_fast"
path = "tests/primary_key_builder_forces_fast.rs"
[[test]]
name = "query_global_statistics"
path = "tests/query_global_statistics.rs"
[[test]]
name = "query_required_clauses"
path = "tests/query_required_clauses.rs"
[[test]]
name = "query_work_diagnostics"
path = "tests/query_work_diagnostics.rs"
[[test]]
name = "range_bitset"
path = "tests/range_bitset.rs"
[[test]]
name = "ranked_boost_handoff"
path = "tests/ranked_boost_handoff.rs"
[[test]]
name = "ranked_conjunction"
path = "tests/ranked_conjunction.rs"
[[test]]
name = "ranked_phrase_bounds"
path = "tests/ranked_phrase_bounds.rs"
[[test]]
name = "ranked_required_optional"
path = "tests/ranked_required_optional.rs"
[[test]]
name = "ranked_term_collection"
path = "tests/ranked_term_collection.rs"
[[test]]
name = "ratio_chunked_collection"
path = "tests/ratio_chunked_collection.rs"
[[test]]
name = "regex_query"
path = "tests/regex_query.rs"
[[test]]
name = "resource_logging"
path = "tests/resource_logging.rs"
[[test]]
name = "segment_meta_durability"
path = "tests/segment_meta_durability.rs"
[[test]]
name = "simd_posting_format"
path = "tests/simd_posting_format.rs"
[[test]]
name = "text_reordering"
path = "tests/text_reordering.rs"
[[test]]
name = "tokenizer_scaling_probe"
path = "tests/tokenizer_scaling_probe.rs"
[[test]]
name = "unicode_word_queries"
path = "tests/unicode_word_queries.rs"
[[test]]
name = "wasm_builder_store_memory_regression"
path = "tests/wasm_builder_store_memory_regression.rs"
[[test]]
name = "wasm_writer_regressions"
path = "tests/wasm_writer_regressions.rs"
[[test]]
name = "wildcard_query"
path = "tests/wildcard_query.rs"
[[bench]]
name = "binary_vectors"
path = "benches/binary_vectors.rs"
harness = false
[[bench]]
name = "bmp_hot_path"
path = "benches/bmp_hot_path.rs"
harness = false
[[bench]]
name = "bmp_payload_layout"
path = "benches/bmp_payload_layout.rs"
harness = false
[[bench]]
name = "bmp_reorder"
path = "benches/bmp_reorder.rs"
harness = false
[[bench]]
name = "bmp_vs_maxscore"
path = "benches/bmp_vs_maxscore.rs"
harness = false
[[bench]]
name = "collector_selection"
path = "benches/collector_selection/main.rs"
harness = false
[[bench]]
name = "compression"
path = "benches/compression.rs"
harness = false
[[bench]]
name = "core_structures"
path = "benches/core_structures.rs"
harness = false
[[bench]]
name = "dense_ann"
path = "benches/dense_ann.rs"
harness = false
[[bench]]
name = "indexing"
path = "benches/indexing.rs"
harness = false
[[bench]]
name = "posting_compression"
path = "benches/posting_compression/main.rs"
harness = false
[[bench]]
name = "rust_hot_paths"
path = "benches/rust_hot_paths.rs"
harness = false
required-features = ["native"]
[[bench]]
name = "scann_vectors"
path = "benches/scann_vectors.rs"
harness = false
[[bench]]
name = "search_pipeline"
path = "benches/search_pipeline.rs"
harness = false
[[bench]]
name = "segment_merge"
path = "benches/segment_merge.rs"
harness = false
required-features = ["native"]
[[bench]]
name = "summa_benchmark"
path = "benches/summa_benchmark/main.rs"
harness = false
[[bench]]
name = "vector_indexing"
path = "benches/vector_indexing.rs"
harness = false
[dependencies.arc-swap]
version = "1"
[dependencies.async-channel]
version = "2.3"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.base64]
version = "0.22"
[dependencies.bincode]
version = "2.0"
features = ["serde"]
[dependencies.bitpacking]
version = "0.9"
features = ["bitpacker4x"]
default-features = false
[dependencies.byteorder]
version = "1.5"
[dependencies.exmex]
version = "0.21"
[dependencies.fst]
version = "0.4"
optional = true
[dependencies.futures]
version = "0.3"
[dependencies.half]
version = "2.7"
features = ["std"]
[dependencies.hashbrown]
version = "0.17"
[dependencies.hf-hub]
version = "1.0"
features = [
"blocking",
"rustls-tls",
]
optional = true
default-features = false
[dependencies.icu_segmenter]
version = "2.3"
features = [
"compiled_data",
"auto",
]
[dependencies.instant]
version = "0.1"
features = ["wasm-bindgen"]
optional = true
[dependencies.lasso]
version = "0.7"
features = ["multi-threaded"]
optional = true
[dependencies.libc]
version = "0.2"
optional = true
[dependencies.lindera]
version = "6"
features = [
"embed-unidic",
"embed-ko-dic",
]
optional = true
[dependencies.log]
version = "0.4"
[dependencies.lru]
version = "0.12"
[dependencies.memmap2]
version = "0.9"
optional = true
[dependencies.metrics]
version = "0.24"
optional = true
[dependencies.num_cpus]
version = "1.17"
optional = true
[dependencies.parking_lot]
version = "0.12"
[dependencies.pest]
version = "2.8"
[dependencies.pest_derive]
version = "2.8"
[dependencies.rand]
version = "0.9"
[dependencies.rayon]
version = "1.11"
optional = true
[dependencies.regex]
version = "1.12"
[dependencies.regex-syntax]
version = "0.8.11"
[dependencies.reqwest]
version = "0.13"
optional = true
default-features = false
[dependencies.rust-stemmers]
version = "1.2"
[dependencies.rustc-hash]
version = "2.1"
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
features = ["float_roundtrip"]
[dependencies.smallvec]
version = "1.15"
[dependencies.stop-words]
version = "0.10"
features = ["nltk"]
[dependencies.tempfile]
version = "3.24"
optional = true
[dependencies.thiserror]
version = "2.0"
[dependencies.tokio]
version = "1.49"
features = [
"rt-multi-thread",
"sync",
"fs",
"io-util",
"macros",
]
optional = true
[dependencies.unicode-normalization]
version = "0.1"
[dependencies.unicode-segmentation]
version = "1.12"
[dependencies.uuid]
version = "1.19"
features = ["v4"]
optional = true
[dependencies.zstd]
version = "0.13"
features = ["zdict_builder"]
default-features = false
[dev-dependencies.comfy-table]
version = "7"
[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]
[dev-dependencies.metrics-util]
version = "0.20"
[dev-dependencies.rand]
version = "0.9"
[dev-dependencies.tempfile]
version = "3.24"
[dev-dependencies.tokio]
version = "1.49"
features = [
"rt-multi-thread",
"sync",
"fs",
"io-util",
"macros",
"macros",
"test-util",
]
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.reqwest]
version = "0.13"
features = ["rustls"]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokenizers]
version = "0.23"
features = [
"onig",
"http",
]
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1.49"
features = [
"rt-multi-thread",
"sync",
"fs",
"io-util",
"macros",
]
[target.'cfg(target_arch = "wasm32")'.dependencies.getrandom]
version = "0.3"
features = ["wasm_js"]
[target.'cfg(target_arch = "wasm32")'.dependencies.reqwest]
version = "0.13"
optional = true
default-features = false
[target.'cfg(target_arch = "wasm32")'.dependencies.tokenizers]
version = "0.23"
features = ["fancy-regex"]
optional = true
default-features = false