对Solr的数据源输入进行非规范化

时间:2012-09-27 12:10:32

标签: solr lucene denormalization

我有一个MySql数据库,我需要将数据提取到Solr中,并在MySql中通过几个表进行规范化。例如,我有一个'articles'表,其中包含'companyId'列。 'companyIds'在第二个表'company'中链接到'companyName'。因此,为了能够使用Solr按公司名称查找文章,我需要在构建Solr索引时进行非规范化。

最简单的方法是什么?可以在数据源配置中完成非规范化,还是在创建索引之前需要进行非规范化?

使用Solrj提供数据并进行规范化似乎是我目前最简单的方法(尽管Solr具有这些功能似乎没有必要)。

1 个答案:

答案 0 :(得分: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