我应该使用 SolrJ 将 Lucene 项目转换为基于浏览器的搜索引擎吗?

Should I use SolrJ to convert Lucene project into browser based search engine ?

我当前的搜索引擎涉及两个基于 Lucene (java) 的桌面应用程序。一个专用于索引内部文档,另一个专用于搜索。

现在我被要求以网页形式提供搜索引擎。所以我的第一个想法是使用 Solr,所以我阅读了手册 (https://lucene.apache.org/solr/guide/7_4/overview-of-searching-in-solr.html) 但后来我意识到在索引阶段我们对 PDF 进行了特殊处理。例如,我们检测 PDF 是否来自扫描文档,或者我们限制将在扫描 PDF 中进行 OCR 处理的页面数量,因为只有第一页对搜索有价值。现在一切都通过调用 类 中的 Lucene API 和很多 if!

所以我的问题是:我应该使用 solrj 来根据我们的需要自定义索引,我应该保留当前的索引部分并只使用 Solr(j) 进行搜索,还是应该覆盖一些 Solr 类以满足我们的需求并避免重新发明轮子。对于后者(覆盖Solr 类)我应该怎么做?

非常感谢您的建议

虽然这是基于意见的,但我会提出我的意见。您建议的所有解决方案都可以使用,但最好的方法是将索引代码编写为一个单独的过程,在 Solr 外部(即重新使用您今天直接将数据推送到 Lucene 索引的现有代码)。

使用您今天拥有的工具,而不是将数据写入 Lucene 索引,而是使用 SolrJ 并将文档提交给 Solr。这将抽象出您今天使用的代码的 Lucene 部分,但仍然允许您以自定义方式处理 PDF。将代码保留在 Solr 之外还将使 far 将来更容易更新 Solr,或者切换到您用于解析的 PDF 库的更新版本,而无需协调和将其集成到 Solr 中。

它还允许您 运行 索引代码与 Solr 完全分开,如果您决定在将来放弃 Solr 以使用另一种 HTTP 接口技术(例如同样基于 Lucene 的 Elasticsearch ),您可以删除将内容推送到 Solr 的小部分,并将其推送到 Elasticsearch。

运行 当尽可能多的索引代码在 Solr 之外时,并行的多个索引过程也更容易,因为 Solr 将只关心实际文本 - 而不必花费当它应该只是响应用户查询(和您的更新)时处理和解析 PDF。