はい。Lucene による全文検索と、従来のデータベースによるデータ ストレージの提供は、十分にサポートされているアーキテクチャです。 簡単な紹介については、こちらをご覧ください。典型的な実装は、検索をサポートできるようにしたいものすべてにインデックスを付け、一意の識別子のみを Lucene インデックスに格納し、ID に基づいてデータベースから検索によって見つかったレコードをプルすることです。DB の負荷を軽減したい場合は、Lucene にいくつかの情報を保存して検索結果のリストを表示し、完全なドキュメントを取得するためにデータベースにのみクエリを実行できます。
スペースの節約に関しては、ある程度の重複があります。ただし、これは Lucene のみの場合でも当てはまります。Lucene は、保存されたデータとは完全に別個に、検索に使用される転置インデックスを保存します。スペースを節約するために、どのデータをインデックスに登録するか、何を保存して後で取得できるようにするかを慎重に検討することをお勧めします。ほとんどの場合、インデックスのみの値はスペース効率が非常に高い傾向があるため、保存するものは Lucene でスペースを節約するために特に重要です。
Lucene は確かにタグ検索を実装できます。これを実装する簡単な方法は、次のように、ドキュメントを作成するときに、選択したフィールドに各タグを追加することです (「タグ」と呼びますが、これは理にかなっているようです)。
document.add(new Field("tags", "widget", Field.Store.NO, Field.Index.ANALYZED));
document.add(new Field("tags", "forkids", Field.Store.NO, Field.Index.ANALYZED));
また、必要な用語を任意のクエリに追加するだけで、特定のタグ内のみを検索できます。たとえば、「forkids」というタグのみを使用して「some stuff」を検索する場合、次のようなクエリを記述できます。
some stuff +tags:forkids