Thanks Ephraim for your response.

Actually I am not using DIH to Sync the data from DB, I wrote on DB-SYNC by
myself, and I am directly retrieving rows from MySQL-DB and Indexing to
Solr.

On my Earlier cases - I Picked Rows with Column Label from DB, and Similar
Column Defined in my Sync Program, It Picks the data and Index it, One
-to-One



So in that case, One to Many -  I have to use a inner-loop (Based on no. of
Candidate Education or Candidate Employer) to Index  (For
Candidate Education and Candidate Employer )

On Thu, Aug 26, 2010 at 4:59 PM, Ephraim Ofir <ephra...@icq.com> wrote:

> As far as I can tell you should use multiValued for these fields:
>
>  <field name="education" type="textgen" indexed="true" stored="true"
> multiValued="true"/>
>   <field name="employer" type="textgen" indexed="true" stored="true"
> multiValued="true"/>
>
> In order to get the data from the DB you should either create a sub
> entity with its own query or (the better performance option) use
> something like:
>
> SELECT cp.name,
>        GROUP_CONCAT(ce.CandidateEducation SEPARATOR '|') AS
> multiple_educations,
>        GROUP_CONCAT(e.Employer SEPARATOR '|') AS multiple_employers
> FROM CandidateProfile_Table cp
> LEFT JOIN CandidateEducation_Table ce ON cp.name = ce.name
> LEFT JOIN Employers_Table e ON cp.name = e.name
> GROUP BY cp.name
>
> This creates one line with the educations and employers concatenated
> into pipe (|) delimited fields.  Then you'd have to break up the
> multiple fields using a RegexTransformer - use something like:
>
> <entity name="candidates"
>        query="...see above..."
>        transformer="RegexTransformer" >
>
>        <field name="education" column="multiple_educations"
> splitBy="\|"/>
>        <field name="employer" column="multiple_employers"
> splitBy="\|"/>
> </entity>
>
> The SQL probably doesn't fit your DB schema, but it's just to clarify
> the idea.  You might have to pick a different field separator if pipe
> (|) might be in your data...
>
> Ephraim Ofir
>
>
> -----Original Message-----
> From: Sumit Arora [mailto:sumit1...@gmail.com]
> Sent: Thursday, August 26, 2010 1:36 PM
> To: solr-user@lucene.apache.org
> Subject: Candidate Profile Search which have multiple employers and
> Educations.
>
> I have to search candidate's profile , on which I have following Tables
> :
>
> Candidate Profile Record : CandidateProfile_Table
>
> CandidateEducation : CandidateEducation_Table  //  EducationIn Different
> Institutes or Colleges  :
>
> Employers :  Employers_Table //More than One Employers :
>
> If I denormalize this all three Table :
>
> CandidateProfile_Table  - 1 Row for Sumit
>
> CandidateEducation_Table - 5 Rows for Sumit
>
> Employers_Table - 5 Rows for Sumit
>
> If these three tables will go to Index in Solr , It will create 25
> Documents
> for one row.
>
>
> In this Case What Should be My Approach :
>
> DeNormalize all three tables and while querying from Solr use Field
> Collpase
> parameter by CandidateProfile Id, So It will return one record.
>
> Or
>
> I should use CandidateEducation_Table,CandidateEducation_Table as
> MultiValued in Solr ?
>
>
> If that is the case, then How I can apply Solr way to use MultiValue
> e.g;
>
> I need to use  Following Configuration in Scehma.xml :
>
>
>  <field name="education" type="textgen" indexed="true" stored="true"/>
>  <field name="employer" type="textgen" indexed="true" stored="true"/>
>
>
> After this :
>
>
> I should pick all education values(from MySql Education Database Table)
> concerned to one profile
>
> and keep this in a one variable - EducationValuesForSolr
>
> and then EducationValuesForSolr's value need to assign to Schema.XML
> defined
> variable education ?
>
>
> Please let me know If I am using right approach and Comments?
>
> /Sumit
>

Reply via email to