1

複数のテーブルで MySql で正規化されたデータを Solr にフェッチする必要がある MySql データベースがあります。たとえば、「companyId」列を持つ「articles」テーブルがあります。「companyIds」は、2 番目のテーブル「company」の「companyName」にリンクされています。したがって、Solr を使用して会社名で記事を検索できるようにするには、Solr インデックスを作成するときに非正規化する必要があります。

これを行う最も簡単な方法は何ですか? 非正規化はデータ ソース構成で実行できますか? または、インデックスを作成する前に非正規化する必要がありますか?

Solrj を使用してデータをフィードし、それを実行しながら正規化することが、現時点で思いつく最も簡単な方法のようです (ただし、Solr にこれらの機能がある場合は必要ないように思われます)。

4

1 に答える 1

1

ああ、データ インポート ハンドラのドキュメントで探していたものを見つけました。現在のテーブルで見つかった参照の値を保持するテーブルに対するクエリは、以下のような「子エンティティ」のクエリを使用して抽出できます。

アイテムのカテゴリ名は、親エンティティ/クエリの category_id を使用してカテゴリ テーブルから選択することで解決されます。

<entity name="item_category" query="select category_id from item_category where item_id='${item.id}'">
    <entity name="category" query="select description from category where id = '${item_category.category_id}'">
                <field column="description" name="cat" />
    </entity>
</entity>

ここからの XML: http://wiki.apache.org/solr/DataImportHandler#Full_Import_Example

于 2012-09-27T13:16:37.503 に答える