2011-12-28 4 views
0

PHPフロントエンドのMySQLデータベースがあります。私は検索機能を実装したいと思いますが、私はややユニークな状況があり、先に進む前にいくつかのアドバイスが必要です。MySQLデータベースのインデックス作成用LuceneまたはSolr(一部は公開できません)

私の雇用主には、アーカイブ調査資料の大量のコレクションがあります。コレクションの中には、メタデータとデータをデジタル形式で利用できるものがありますが、ドナー契約や著作権問題のために、デジタルデータのすべてがインターネット経由でアクセスできるわけではありません。デジタルデータがインターネット上で許可されない場合、人々は物理的に私たちの建物を訪れ、情報を見ることができる。現在、各デジタルコレクションには独自のデータベースがありますが、すべてのコレクションを一度に検索できるように、すべてを単一のデータベースに統合するプロセスに入っています。

Solrを使用してインデックス付けして検索すると、情報はHTTP経由でTomcat上で実行されているSolrインスタンスとクライアント間で送信され、公開されていないデータが公開される可能性があります。この問題を避けるために、Luceneをサーバー上で直接使用してインデックスを生成し、それから何らかの形で同じサーバー上のPHPから直接アクセスすることをお勧めします。私の質問は、(1)私の状況評価が正しいと思う。 (2)そうでない場合は、実際にどのように機能しますか?私はJavaを知っています。ありがとうございました。

答えて

2

HTTP経由でデータを送信し、そのデータにパブリックアクセスすることは、全く異なる2つの懸念事項です。世界中の物理的に異なるマシン上でSolrサーバーを実行させ、明示的に許可する特定のマシンからしかアクセスできないように構成することができます。通常は、アプリケーションが実行されているのと同じマシン上でSolrサーバーを実行し、サーバーのファイアウォール/ポート/ルーティング設定を構成して、アプリケーションへのパブリックアクセスのみを許可します。これは本当に構成の問題だけではなく、どちらかを選択することに懸念事項ではありません。

1

SolrからMySQLにデータを送信することに懸念がある場合は、単にフィールドを「インデックス付き」にして「格納済み」にすることはできません。このようにして、クエリを実行することはできますが、コンテンツを読み取ることはできません。さらに、信頼できるマシン(PHPクライアント)からのSolrへのアクセスを許可することが推奨されています。

Solrは、フィールドコンテンツを含む大きなXMLまたはJSON応答を生成するにはあまりよくありません。したがって、本当に必要なもの(つまり、DBレコードのidだけを取得し、DB自体から残りのものを取得してください) このようにすれば、レスポンスが速く、他の人には役に立たなくなり(情報漏えいの場合)、インデックスは小さくなります。

関連する問題