I have 8 tables in my solr data-config files and all are joined since i
need data from all of them.
But out of those 8 tables i have three tables that have common fields
,which i can use to link.But the issues is that the common fields in the
three table that i have are such that they are repeating values.
eg:-

First table(businessmasters) has 2 columns
Business_id(pk)    Business_name       Mod1(on update timestamp)
       1                        ABC
       2                        XYZ
       3                        KOT


Second table(search_tag) has 3 columns
Search_tag_id(pk)   Business_id  Search_tag_name  Mod2(on update timestamp)
         1                      1                    hair
         2                      1                    trimming

         3                      2                    massage
         4                      1                    facial
         5                      2                    makeup

Now i want to join the two tables and i do that on the basis of
Business_id.But since iam joining on Business_id which is a non key in
second table i just write that business_id is a key(because if i cant use
Search_tag_id as its not common in both tables and if i take Search_tag_id
as pk and join the tables on Business_id   solr gives an error during delta
import
"deltaQuery has no column to resolve to declared primary key").
But when i say that Business_id is pk and join tables on the basis of that
it works fine and delta import works.

But the issue comes when i try  to change the Business_id in second table
eg i want to change the Business_id of Search_tag_id  3 to 1 and i run
delta import.The update  adds the search tag to Business_id 1 but also
doesn't remove the search tag from Business_ID 2.The value of search tags
in Business_id 2 remains there ,where as it should go away if iam changing
Business_id from 2 to 1.Since now Business_id is not linked to any search
tag.
Iam not able to figure out how to resolve this issue.This is how i write it
in data-config file.




<entity name="businessmasters" pk="business_id" query="SELECT Business_id,
Business_name,Mod1 from businessmasters"
deltaImportQuery="SELECT Business_id,
Business_name,Mod1 from businessmasters where
business_id='${dih.delta.business_id}"
deltaQuery="select business_id from businessmasters where modified >
'${dih.last_index_time}'">

 <field column="business_id" name="id"/>
    <field column="business_name" name="business_name" indexed="true"
stored="true" />
  <field column="Mod1" name="Mod1" indexed="true" stored="true" />





<entity name="search_tag"  pk="business_id" query="SELECT
Search_tag_id,Search_tag_name from search_tag where
business_id='${businessmasters.business_id}'"
deltaQuery="select business_id from search_tag where Mod2  >
'${dih.last_index_time}'"
parentDeltaQuery="select business_id from businessmasters where
business_id=${search_tag.business_id}">

<field column="business_id " name="id" />
<field column="Search_tag_id" name="Search_tag_id" indexed="true"
stored="true" />
<field column="Search_tag_name  " name="Search_tag_name  " indexed="true"
stored="true" />
<field column="Mod2" name="Mod2" indexed="true" stored="true" />
 </entity>


</entity>

Thanks in advance iam new to solr and iam stuck on this issue.

-- 
Regards
Madhav Bahuguna

Reply via email to