2

Lucene を使い始めたばかりで、コンテンツを検索できるようにデータベースのインデックスを作成しようとしています。索引付けに関心のある 3 つのテーブルがあります。

1. イメージ テーブル- これは、各エントリがイメージを表すテーブルです。各画像には一意の ID とその他の情報 (タイトル、説明など) があります。

2. People テーブル- これは、各エントリが人物を表すテーブルです。各人には一意の ID とその他の情報 (名前、住所、会社など) があります。

3. クレジット テーブル- このテーブルには 3 つのフィールド (画像、人物、クレジット タイプ) があります。その目的は、その画像のクレジットとして一部の人々を画像に関連付けることです。各画像には、複数の人物 (監督、写真家、小道具のアーティストなど) を含めることができます。また、人物は複数の画像にクレジットされています。

Lucene を使用していくつかの検索を実行できるように、これらのテーブルにインデックスを付けようとしていますが、読んだように、構造を平坦化する必要があります。

私が思いついた最初の解決策は、画像/人物の組み合わせごとに Lucene ドキュメントを作成することです。これにより、インデックスに多くの重複コンテンツが作成されるのではないかと心配しています (画像/人物のすべての詳細は、画像に取り組んだ各人物の各ドキュメントで複製する必要があります)。

これを手伝ってくれるLuceneの経験者はいますか? 非正規化には一般的な解決策がないことを知っているため、より具体的な例を示しました。

ありがとうございます。データベースに関する詳細情報を喜んで提供します。

PS: 残念ながら、データベースの構造を変更する方法はありません (クライアントに属します)。私は自分が持っているもので働かなければなりません。

4

1 に答える 1

0

関連するすべての画像の説明を連結した for each person を作成できますDocument(人物情報に追加するか、別の に追加しますField)。

Documentまたは、人物ごとに最小限の画像を作成しDocument、画像ごとに作成し、作成者の名前とクレジット情報を画像の別のフィールドにDocument入れ、人物 ID (または人物DocumentID) を 3 番目の非インデックス付きフィールド。(Lucene は、リレーショナル データではなく、フラットなドキュメント インデックス作成を対象としていますが、関係は手動で定義できます。)

これは実際には、何を検索するか (画像または人物) と、検索が機能するのに十分なキーワードがそれぞれに含まれているかどうかの問題です。いくつかのオプションを試して、それらが十分に機能し、使用可能なスペースを超えていないかどうかを確認してください。

Documentただし、クレジットテーブルはおそらく構築の良い候補にはなりません。

于 2011-03-11T16:29:24.297 に答える