我有一个带有PHP前端的MySQL数据库。我想实现一个搜索功能,但我有一个独特的情况,需要一些建议才能继续。
我的雇主拥有大量档案研究资料。一些馆藏具有以数字格式提供的元数据和数据,但是,由于捐赠者协议或版权问题,并非所有数字数据都可以通过互联网访问。在互联网上不允许使用数字数据的情况下,人们可以实际访问我们的建筑物并查看信息。现在每个数字馆藏都有自己的数据库,但我们正在将所有内容整合到一个数据库中,以便顾客可以同时搜索所有馆藏。
我的理解是,如果我使用Solr进行索引和搜索,那么信息将通过HTTP在Tomcat上运行的Solr实例之间传输到客户端,并且可能会暴露不应该公开的数据。为了避免这个问题,我想也许最好直接在服务器上使用Lucene来生成索引,然后以某种方式直接在同一台服务器上从PHP访问它。我的问题是(1)我对情况的评估听起来是否正确; (2)如果没有,它实际上如何运作?我知道Java。谢谢。
答案 0 :(得分:2)
通过HTTP传输数据并公开访问该数据是两个完全不同的问题。您可以让Solr服务器在全球各地的物理上不同的计算机上运行,并且仍然对其进行配置,以便只能从您明确允许的一台特定计算机上访问它。通常,您可能在运行应用程序的同一台计算机上运行Solr服务器,并将服务器的防火墙/端口/路由设置配置为仅允许公共访问您的应用程序,而不是Solr服务器。这真的不是选择其中一个,而只是配置问题。
答案 1 :(得分:1)
如果您担心从Solr传输数据到MySQL,您可以简单地使字段仅“索引”但不“存储”。通过这种方式,您可以查询它们,但不能读取它们的内容,另外建议只允许从受信任的计算机(PHP客户端)访问Solr。
Solr在使用字段内容生成大型XML或JSON响应方面不是很好,因此只询问(并存储)您真正需要的内容(即只有DB记录的id,并从DB本身获取其余内容)。 通过这种方式,您将获得快速响应,对于其他人(在信息泄漏的情况下)将无用,并且索引将更小。