2013-01-31 61 views
1

將DataImportHandler與SqlEntityProcessor一起使用時,我希望有幾個定義進入具有不同查詢的相同模式。Solr:如何區分通過DIH導入的多個實體

如何搜索這兩種實體,但同時還要區分它們的來源。例如:

<document> 
<entity name="entity1" query="query1"> 

    <field column="column1" name="column1" /> 
    <field column="column2" name="column2" /> 

</entity> 
<entity name="entity2" query="query2"> 

    <field column="column1" name="column1" /> 
    <field column="column2" name="column2" /> 

</entity> 
</document> 

如何從實體1和實體2獲取數據?

回答

1

只要您的架構字段(例如column1,column2)在不同實體之間兼容,您就可以運行DataImportHandler,它將從兩個查詢中填充Solr集合。

然後,當您查詢時,您會看到所有實體組合。

如果您想標記哪個實體來自哪個來源,我會建議添加另一個字段(例如type)併爲其分配不同的靜態值,在每個實體定義using TemplateTransformer中。

還要小心使用乾淨的命令。默認情況下,它會刪除索引中的所有內容。當您從幾個來源填充索引時,您需要確保它不會刪除太多。使用preImportDeleteQuery僅刪除爲該實體設置的類型字段中具有相同值的條目。

+0

我有一個問題,你會幫我嗎?我已經索引了一個名爲物品的表,我已經加入了它的表顏色,尺寸,品牌。我想過濾的項目如:黑色(222),白色(137),XXL(225)等等我想同時顯示所有項目和所有filters.Can我與solr做? –

+0

具體的例子是這樣的http://clevelandwebdesign.org/search/query=YQ==你能告訴我什麼? –

+0

如果您在solr索引中有colr,則可以使用&fq ='color name'。 – vuky