@filter-enginez/core

中文文档
0.2.0发布于 2026/11/01Apache-2.0TypeScriptES Module构建来源已验证

面向TypeScript的分面搜索和过滤引擎:规则,和/或/不组合,过滤器组,JSON配置,撤销/重做devtools,咆哮位图,r树,贝叶斯建议和MinHash相似度加速。在浏览器、Node和Web work中运行

中文使用文档
文档目录4 节
  1. 安装
  2. 快速启动
  3. 错误
  4. 文档

@filter-enginez /核心

过滤器引擎-规则,组成,devtools,内部存储,动作日志,四种命名的CS算法(咆哮) 位图,r树,贝叶斯共生,MinHash + LSH)。同构:运行在浏览器、Node、Cloudflare Workers、Deno、 运行时。

安装

pnpm add @filter-enginez/core

位图加速使用 roaring-wasm,一个可选的对等依赖项:core不需要它就可以运行,而安装core则不能 安装它。要启用位图,请将其安装在core旁边并等待 initializeBitmapAcceleration() 一次启动(见 快速入门):

pnpm add roaring-wasm

没有它, initializeBitmapAcceleration() 拒绝。 FilterEngineModeError 谁的代码是 MODE_ACCELERATION_PEER_MISSING 它的信息是安装命令,引擎继续过滤它的 具有相同结果的谓词路径。引擎中没有任何东西为你调用它,所以从不调用的应用程序不需要任何东西 更多。

Sub-exports: @filter-enginez/core/keyboard/browser, @filter-enginez/core/similarity, @filter-enginez/core/storage/browser, @filter-enginez/core/suggestions.

similarity 和 suggestions 单独的入口点是故意的:导入它们是可选择的,所以不导入它们 使他们的字节远离你的构建。

快速启动

import { createFilterEngine, initializeBitmapAcceleration, InSetRule, RangeRule } from '@filter-enginez/core';
import { type Wine, wines } from '@filter-enginez/mock-data/wine';

// Await this once at startup, with roaring-wasm installed. It loads roaring-wasm, which an app that
// never calls it does not bundle. The Roaring-Bitmap path stays OFF until it resolves —
// silently, so an app whose WASM asset is still in flight keeps working rather than
// throwing. Skipping it costs roughly 40x on a 10k corpus and raises no warning.
await initializeBitmapAcceleration();

const engine = createFilterEngine<Wine>({ sourceData: wines });

engine.addRule('price', new RangeRule('priceUsd', { min: 20, max: 60 }));
engine.addRule('varietal', new InSetRule('varietal', ['Merlot', 'Syrah']));

engine.getResults(); // every wine passing BOTH rules
engine.getResultCount(); // cheaper when you only need the number

规则和共同。将某一方面的规则命名为一组(engine.addGroup({ id, filterIds })); 对于任何 其他OR / NOT,与 and / or / not 并将结果传递给 engine.setExpression(...)。位图路径 用于连词,所以是一个表达式或an 'or' Group是按项计算的,结果是一样的。

错误

引擎产生的每一个错误都是a FilterEngineError 具有只读、机器可读的特点 code。四个子类名称 〇家庭 FilterEngineConfigError (配置文档、选项对象或绑定无效), FilterEngineRuleError (规则类或序列化规则不可用; RuleRegistryError 扩展), FilterEngineModeError (例如 addRule() 当设置表达式时)和 FilterEngineDestroyedError 之后的任何方法 destroy()). 一个包裹 失败是标准 cause。代码联合也被导出(FilterEngineErrorCode 每班一个),所以a switch 在 error.code 检查穷竭性。

import { createFilterEngine, type FilterEngineConfig, FilterEngineError } from '@filter-enginez/core';

declare const sharedConfig: FilterEngineConfig;

const engine = createFilterEngine({ sourceData: [] });

try {
  engine.loadConfig(sharedConfig);
} catch (error) {
  if (!(error instanceof FilterEngineError)) {
    throw error;
  }
  console.warn(`Ignoring a config the engine refused: ${error.code}`, error.cause);
}

完整的代码表,以及每次抛出时的代码表 docs/architecture.md §2.5引擎存储库。

文档

的引擎存储库中有消费者指南 docs/guides/:

  • extending_rules.md -编写自定义 FilterRule 在序列化中幸存下来
  • json_config.md -将过滤器声明为数据,以及为什么该格式可以安全地从租户接受
  • acceleration_tuning.md -这五个是什么? acceleration 切换是值得的,有衡量的
  • worker_offload.md -在Web Worker中运行引擎

项目之家,有六个现场演示: https://filterenginez.com。文档站点: https://docs.filterenginez.com.

apache - 2.0。看到 LICENSE.md 和 NOTICE.md,两者都包含在此包中。

版本与发布记录

@filter-enginez/core 共发布 7 个版本,首次发布于 2026/10/13;过去 12 个月发布了 7 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.2.0latest2026/11/012 天前
0.1.12026/10/2311 天前
0.1.02026/10/2113 天前
0.0.32026/10/2014 天前
0.0.22026/10/1321 天前
0.0.12026/10/1321 天前

关于 @filter-enginez/core 的常见问题

@filter-enginez/core 是什么?

面向TypeScript的分面搜索和过滤引擎:规则,和/或/不组合,过滤器组,JSON配置,撤销/重做devtools,咆哮位图,r树,贝叶斯建议和MinHash相似度加速。在浏览器、Node和Web work中运行

如何安装 @filter-enginez/core?

在项目目录运行 npm install @filter-enginez/core,或使用 pnpm add / yarn add / bun add。

@filter-enginez/core 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@filter-enginez/core 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@filter-enginez/core 可以商用吗?

@filter-enginez/core 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@filter-enginez/core 还在维护吗?

最新版本 0.2.0 发布于 2026/11/01(2 天前);至今共发布 7 个版本,其中过去 12 个月发布了 7 个;首次发布于 2026/10/13。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。