专为搜索而设计的高度灵活、可扩展、容错的文档摄取系统。
构建是在以下机构善意捐赠的基础设施上运行的
通常,搜索项目首先会手动向搜索引擎提供一些文档,通常是通过 Solr 内置的“仅用于测试”的处理功能(例如 SolrCell 或 post.jar)。记录并包含这些功能是为了帮助用户了解他们可以通过最少的痛苦设置来使用 Solr 做什么。
这很好,初次探索就应该如此。不幸的是,这也是一个潜在的陷阱。
很多时候,不太了解的用户可能会被参考手册中记录的这些界面所误导(并假设任何记录的内容都必须是“正确的方式”),从而继续开发他们的搜索系统通过自动化使用这些相同的接口。公平地对待这些用户,一些旧版本的 Solr 参考指南未能识别接口的“仅用于测试”性质,有时是因为社区花了一段时间才意识到与之相关的陷阱。
不幸的是,大规模摄取文档进行搜索并非易事,而且这些索引接口并不适合生产使用。通常的结果是,它对于小型测试语料库工作“正常”,然后在较大的生产语料库上变得不稳定。为输入此类接口而编写的代码通常需要针对多种类型的文档或多种文档格式重复,并且很容易导致常见功能的重复以及剪切和粘贴复制。此外,在投入大量工程技术以使此类解决方案在大型语料库上运行之后,他们发现的下一件事是,如果索引中途失败,他们将无法恢复。在最坏的情况下,故障与语料库的大小有关,并且随着语料库的增长,故障变得越来越常见,直到完成和索引运行的机会很小,如果允许问题,系统最终根本无法索引或升级溃烂。其结果是一系列可怕、痛苦且可能代价高昂的成长烦恼。
JesterJ 致力于让您能够轻松地开始使用强大的全功能索引基础设施,这样您就不必重新发明轮子。 JesterJ 是一个在您处理大量文档之前不需要放弃的系统(希望到那时您已经获得了可观的利润,可以支付大型定制解决方案的费用!)。提供了各种可重用的处理组件,编写您自己的自定义处理器就像遵循一些简单的指导原则实现 4 方法接口一样简单。
通常,用于将文档索引到 Solr 或其他搜索引擎的系统的第一个版本是相当线性和直接的,但随着时间的推移,功能和增强功能通常会增加复杂性。有时,系统从一开始就很复杂,可能是因为搜索被添加到现有系统中。 JesterJ 旨在处理复杂的索引场景。考虑以下假设的索引工作流程:
JesterJ 使用单个集中处理计划来处理此类场景,并将确保如果系统被拔掉,您不会收到有关收到订单的第二条消息。 JesterJ 的默认模式是确保未标记为安全或幂等的步骤最多传递一次。安全步骤没有外部影响,并且幂等步骤可以在到达最终处理端点的途中重复。
请参阅网站和文档以获取更多信息
请参阅 wiki 中的文档
当前版本:1.0-Beta3。这是最好用的版本,并且应该具有大部分功能。 (已知问题:#189)
下一个版本: 1.0-Beta4将很快发布,如果两周内没有发现严重问题,1.0将发布。
注意:当前代码和即将发布的 1.0 版本针对可由单台机器提供服务的任何设计和负载。 JesterJ 明确设计为利用具有多个处理器的机器。您可以通过重复最慢的步骤来设计您的计划,以缓解瓶颈。每个重复项都意味着有一个额外的线程在该步骤上工作。 1.1 计划自动扩展线程,跨多台机器扩展是 2.x 版本的关键优先事项。与往常一样,如果您希望尽快获得这些功能,请开始讨论并在可能的情况下贡献 PR!
目前仅定期测试 JDK 11。 JDK 11 的任何发行版都应该可以工作。计划在未来版本中支持 Java 17 和未来的 LTS 版本。
在 Discord 上讨论功能、提出问题等:https://discord.gg/RmdTYvpXr9
在此版本中,我们具有以下功能
~/.jj/cassandra
1.0 版旨在用于单节点系统,因此适合用于中小型项目(数千万或可能是数亿个文档)。
我们的问题页面上的里程碑过滤器可以随时对未来版本中的内容进行最佳猜测