2012-09-27 47 views
1

我有一個MySql數據庫,我需要將數據提取到在MySql中通過多個表格規範化的Solr。例如,我有一個'articles'表有一個'companyId'列。 'companyIds'在第二個表'company'中鏈接到'companyName'。因此,爲了能夠使用Solr按公司名稱查找文章,我需要在構建Solr索引時進行非規範化處理。非規範化Solr的數據源輸入

這樣做最簡單的方法是什麼?數據源配置中是否可以執行非規範化,還是需要在創建索引之前進行非規範化?

使用Solrj進行數據處理並進行歸一化似乎是目前我能想到的最簡單的方法(儘管Solr具有這些功能似乎沒有必要)。

回答

1

啊,我在數據導入處理程序的文檔中找到了我正在尋找的內容。對持有當前表中引用值的表的查詢可以使用像下面的「子實體」查詢來提取。

<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

+0

我要指出,我結束

的項目的類別名稱是通過使用CATEGORY_ID從父實體/查詢從類別表中選擇解決爲了提高性能,寫了我自己的數據導入器。 solr配置似乎沒有足夠的靈活性來足夠有效地運行查詢,在我實施時足夠有效。如果你願意的話,你可以查看源代碼[here](https://bitbucket.org/worldsayshi/flattableimporthandler)。 – worldsayshi