用于索引MySQL数据库数据的Lucene或Solr,其中一些数据无法公开

用于索引MySQL数据库数据的Lucene或Solr,其中一些数据无法公开,solr,lucene,Solr,Lucene,我有一个带有PHP前端的MySQL数据库。我想实现一个搜索功能,但我有一个有点独特的情况,需要一些建议,然后再继续 我的雇主收集了大量档案研究资料。一些藏品有元数据和数字格式的数据,但是,由于捐助者协议或版权问题,并非所有数字数据都允许通过互联网访问。在互联网上不允许使用数字数据的情况下,人们可以亲自访问我们的大楼并查看信息。目前,每个数字收藏都有自己的数据库,但我们正在将所有内容整合到一个数据库中,以便用户可以同时搜索所有收藏 我的理解是,如果我使用Solr进行索引和搜索,信息将通过HTTP在

我有一个带有PHP前端的MySQL数据库。我想实现一个搜索功能,但我有一个有点独特的情况,需要一些建议,然后再继续

我的雇主收集了大量档案研究资料。一些藏品有元数据和数字格式的数据,但是,由于捐助者协议或版权问题,并非所有数字数据都允许通过互联网访问。在互联网上不允许使用数字数据的情况下,人们可以亲自访问我们的大楼并查看信息。目前,每个数字收藏都有自己的数据库,但我们正在将所有内容整合到一个数据库中,以便用户可以同时搜索所有收藏


我的理解是,如果我使用Solr进行索引和搜索,信息将通过HTTP在Tomcat上运行的Solr实例之间传输到客户端,这可能会暴露不应该是公共的数据。为了避免这个问题,我认为在服务器上直接使用Lucene生成索引,然后在同一台服务器上直接从PHP访问它可能是一个更好的主意。我的问题是(1)我对形势的评估是否正确;(2)如果没有,它实际上是如何工作的?我确实懂Java。谢谢。

通过HTTP传输数据和公开访问这些数据是两个完全不同的问题。您可以让Solr服务器在地球另一端的物理上不同的机器上运行,并且仍然对其进行配置,以便只能从您明确允许的一台特定机器上访问它。通常情况下,您可能会让Solr服务器在运行应用程序的同一台计算机上运行,并将服务器的防火墙/端口/路由设置配置为只允许公众访问您的应用程序,而不允许公众访问Solr服务器。这实际上不是一个选择问题,只是一个配置问题。

通过HTTP传输数据和公开访问数据是两个完全不同的问题。您可以让Solr服务器在地球另一端的物理上不同的机器上运行,并且仍然对其进行配置,以便只能从您明确允许的一台特定机器上访问它。通常情况下,您可能会让Solr服务器在运行应用程序的同一台计算机上运行,并将服务器的防火墙/端口/路由设置配置为只允许公众访问您的应用程序,而不允许公众访问Solr服务器。这实际上不是选择一个或另一个的问题,只是配置问题。

如果您关心将数据从Solr传输到MySQL,您只需将字段设置为“索引”而不是“存储”。通过这种方式,您可以查询它们,但不能读取它们的内容,另外,正如所建议的那样,只允许从受信任的机器(PHP客户端)访问Solr

Solr不能很好地生成包含字段内容的大型XML或JSON响应,因此只询问(并存储)您真正需要的内容(即,仅DB记录的id,其余内容从DB本身获取)。
通过这种方式,您将获得快速响应,对其他人毫无用处(在信息泄漏的情况下),索引将更小。

如果您关心将数据从Solr传输到MySQL,您只需将字段设置为“索引”而不是“存储”。通过这种方式,您可以查询它们,但不能读取它们的内容,另外,正如所建议的那样,只允许从受信任的机器(PHP客户端)访问Solr

Solr不能很好地生成包含字段内容的大型XML或JSON响应,因此只询问(并存储)您真正需要的内容(即,仅DB记录的id,其余内容从DB本身获取)。 这样,您将有快速的响应,它将对其他人毫无用处(在信息泄漏的情况下),索引将更小