4个版本 (重大更新)
0.4.0 | 2022年2月1日 |
---|---|
0.3.0 | 2022年1月13日 |
0.2.0 | 2021年5月10日 |
0.1.0 | 2020年3月29日 |
#900 in WebAssembly
37KB
598 行
porigon
用Rust编写的基于FST的轻量级自动补全库,针对WebAssembly和内存中存储的数据
MIT协议授权。
预期用途
这个库的想法是围绕 fst crate 提供一个轻量级、符合惯用的API,允许你在WebAssembly环境中构建、序列化和反序列化以及查询FST。它是构建可在网页、边缘(例如Cloudflare Worker)或后端(node.js)使用的自动补全服务的理想起点。
现有的解决方案,例如 tantivy,不适合使用,因为它们太重(wasm二进制大小超过1MB)或无法编译为WebAssembly。如果你在寻找一个更全面的全文搜索引擎,请查看下面的替代方案列表。
文档
安装
只需将相应的条目添加到你的 Cargo.toml
依赖列表中
[dependencies]
porigon = "0.1.0"
示例
此示例演示了在内存中构建一个 Searchable
,对其执行 StartsWith
查询,并使用 TopScoreCollector
收集前3个文档。
use porigon::{Searchable, TopScoreCollector};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let items = vec!(
("bar".as_bytes(), 1),
("foo".as_bytes(), 2),
("foobar".as_bytes(), 3)
);
let searchable = Searchable::build_from_iter(items)?;
let mut collector = TopScoreCollector::new(3);
collector.consume_stream(
searchable
.starts_with("foo")
.rescore(|_, index, _| index * 2)
);
let docs = collector.top_documents();
assert_eq!(docs[0].index, 3);
Ok(())
}
请查看文档或 wasm-example
以获取更多示例。
替代方案
如果你在寻找一个更通用的全文搜索引擎,请查看这些替代方案
依赖项
~2.5MB
~26K SLoC