nostr_db/
lib.rs

1//! Nostr event database
2
3mod db;
4mod error;
5mod event;
6mod filter;
7mod key;
8pub use secp256k1;
9
10pub use {
11    db::CheckEventResult, db::Db, db::Iter, error::Error, event::now, event::ArchivedEventIndex,
12    event::Event, event::EventIndex, event::FromEventData, filter::Filter, filter::SortList,
13};
14
15pub use nostr_kv as kv;
16
17/// Stats of query
18#[derive(Debug, Clone)]
19pub struct Stats {
20    pub scan_index: u64,
21    pub get_data: u64,
22    pub get_index: u64,
23}
24
25#[cfg(feature = "search")]
26use charabia::Segment;
27
28#[cfg(feature = "search")]
29/// segment keywords by charabia
30pub fn segment(content: &str) -> Vec<Vec<u8>> {
31    let iter = content.segment_str();
32    let mut words = iter
33        .filter_map(|s| {
34            let s = s.to_lowercase();
35            let bytes = s.as_bytes();
36            // limit size
37            if bytes.len() < 255 {
38                Some(bytes.to_vec())
39            } else {
40                None
41            }
42        })
43        .collect::<Vec<_>>();
44    words.sort();
45    words.dedup();
46    words
47}