Hi Kevin,<br> <br> This is what I was exactly looking for. Thanks for your suggestions and sample schema.<br> Guess you are professional in this Solr! =)<br><br>
Regards,<br> Praveen Cheng Zhang-2 wrote: > > One solr instance has only one doc type. So you have many types, the first > option is to use multiple solr server instance. > > The second option is to use multiple core. In this case, you have one solr > sever instance but in the server instance you have more than one core. > > If you don't want to use multiple server instance or multiple core, the > third option is to use the dynamic field. Here is my approach. In the > schema, I define all dynamic fields I need. It covers all of my cases. Its > format is *_DATATYPE_INDEXED_STORED_MULTIPLEVALUE. > > DATATYPE = Integer | Float | Double | String | Text | DaTe | Long. The > short versons are "i f d s t dt" > INDEXED: i -- yes, it's indexed; ni -- no, it's not indexed > STORED: s -- yes, it's stored; ns -- no, it's not stored > MULTIPLEVALUE: m -- yes, this field has multi-values; nm -- no, this field > has single value. > > My list of dynamic fields. > > > <dynamicField name="*_i_i_s_m" type="integer" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_i_i_s_nm" type="integer" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_i_i_ns_m" type="integer" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_i_i_ns_nm" type="integer" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_i_ni_s_m" type="integer" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_i_ni_s_nm" type="integer" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_i_ni_ns_m" type="integer" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_i_ni_ns_nm" type="integer" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_l_i_s_m" type="long" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_l_i_s_nm" type="long" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_l_i_ns_m" type="long" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_l_i_ns_nm" type="long" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_l_ni_s_m" type="long" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_l_ni_s_nm" type="long" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_l_ni_ns_m" type="long" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_l_ni_ns_nm" type="long" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_f_i_s_m" type="float" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_f_i_s_nm" type="float" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_f_i_ns_m" type="float" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_f_i_ns_nm" type="float" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_f_ni_s_m" type="float" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_f_ni_s_nm" type="float" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_f_ni_ns_m" type="float" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_f_ni_ns_nm" type="float" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_d_i_s_m" type="double" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_d_i_s_nm" type="double" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_d_i_ns_m" type="double" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_d_i_ns_nm" type="double" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_d_ni_s_m" type="double" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_d_ni_s_nm" type="double" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_d_ni_ns_m" type="double" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_d_ni_ns_nm" type="double" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_si_i_s_m" type="sint" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_si_i_s_nm" type="sint" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_si_i_ns_m" type="sint" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_si_i_ns_nm" type="sint" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_si_ni_s_m" type="sint" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_si_ni_s_nm" type="sint" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_si_ni_ns_m" type="sint" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_si_ni_ns_nm" type="sint" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_sl_i_s_m" type="slong" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_sl_i_s_nm" type="slong" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_sl_i_ns_m" type="slong" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_sl_i_ns_nm" type="slong" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_sl_ni_s_m" type="slong" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_sl_ni_s_nm" type="slong" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_sl_ni_ns_m" type="slong" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_sl_ni_ns_nm" type="slong" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_sf_i_s_m" type="sfloat" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_sf_i_s_nm" type="sfloat" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_sf_i_ns_m" type="sfloat" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_sf_i_ns_nm" type="sfloat" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_sf_ni_s_m" type="sfloat" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_sf_ni_s_nm" type="sfloat" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_sf_ni_ns_m" type="sfloat" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_sf_ni_ns_nm" type="sfloat" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_sd_i_s_m" type="sdouble" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_sd_i_s_nm" type="sdouble" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_sd_i_ns_m" type="sdouble" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_sd_i_ns_nm" type="sdouble" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_sd_ni_s_m" type="sdouble" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_sd_ni_s_nm" type="sdouble" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_sd_ni_ns_m" type="sdouble" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_sd_ni_ns_nm" type="sdouble" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_s_i_s_m" type="string" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_s_i_s_nm" type="string" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_s_i_ns_m" type="string" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_s_i_ns_nm" type="string" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_s_ni_s_m" type="string" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_s_ni_s_nm" type="string" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_s_ni_ns_m" type="string" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_s_ni_ns_nm" type="string" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_t_i_s_m" type="text" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_t_i_s_nm" type="text" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_t_i_ns_m" type="text" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_t_i_ns_nm" type="text" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_t_ni_s_m" type="text" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_t_ni_s_nm" type="text" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_t_ni_ns_m" type="text" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_t_ni_ns_nm" type="text" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_b_i_s_m" type="boolean" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_b_i_s_nm" type="boolean" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_b_i_ns_m" type="boolean" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_b_i_ns_nm" type="boolean" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_b_ni_s_m" type="boolean" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_b_ni_s_nm" type="boolean" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_b_ni_ns_m" type="boolean" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_b_ni_ns_nm" type="boolean" indexed="false" > stored="false" multiValued="false"/> > <dynamicField name="*_dt_i_s_m" type="date" indexed="true" > stored="true" multiValued="true"/> > <dynamicField name="*_dt_i_s_nm" type="date" indexed="true" > stored="true" multiValued="false"/> > <dynamicField name="*_dt_i_ns_m" type="date" indexed="true" > stored="false" multiValued="true"/> > <dynamicField name="*_dt_i_ns_nm" type="date" indexed="true" > stored="false" multiValued="false"/> > <dynamicField name="*_dt_ni_s_m" type="date" indexed="false" > stored="true" multiValued="true"/> > <dynamicField name="*_dt_ni_s_nm" type="date" indexed="false" > stored="true" multiValued="false"/> > <dynamicField name="*_dt_ni_ns_m" type="date" indexed="false" > stored="false" multiValued="true"/> > <dynamicField name="*_dt_ni_ns_nm" type="date" indexed="false" > stored="false" multiValued="false"/> > > I also defined a java annotation SolrField as below, > > > import java.lang.annotation.Target; > import java.lang.annotation.Retention; > > import static java.lang.annotation.ElementType.*; > import static java.lang.annotation.RetentionPolicy.*; > > @Retention(RUNTIME) > @Target(FIELD) > public @interface SolrField { > boolean stored() default true; > > boolean indexed() default true; > > boolean sortable() default false; > > boolean text() default true; > } > > Then, my class looks this: > > > public class SolrObject { > @SolrField(text=false) > protected String id; > > Float score; > > @SolrField(sortable=true) > Date timestamp = new Date(); > } > > public class A extends SolrObject { > @SolrField > int ifield; > > @SolrField > Date dateField > > @SolrField > List<String> multiValues; > > ..... > } > > public class B extends SolrObject { > ...... > } > > public class C extends A { > @SolrField > int i; > > ...... > } > > And then, when I have an object, say c = new C(). I use reflection to get > all fields which have SolrField annotation, and map all javaa types to > solr dynamic field types > > A lot of code. Once all of this is done, my life now is very easy. My > application now looks like, > > C c = new C(); > > // this method I developed use reflection to get SolrInputDocument > from an Object instnce which has SolrField annotation. > SolrInputDocument doc = getSolrInputDocument(c); > > CommonsHttpSolrServer.add(doc); > > The most trick part is to map java type to solr field types i defined. > > Hope it helps, > Kevin > > > > > ----- Original Message ---- > From: Praveen_Kumar_J <praveen.kumar.jaya...@gmail.com> > To: solr-user@lucene.apache.org > Sent: Friday, March 6, 2009 5:43:41 AM > Subject: How can I configure different types in Solr? > > > Hi > > How do I configure different custom types or schemas in Solr? > > > Assume I have some custom types type1 and type1 (some composite classes). > > Can I configure these 2 types in a single schema file? > > > I need these 2 types to be online for creating and searching data. > > Please provide me some sample configuration. > > > > Regards, > Praveen > -- > View this message in context: > http://www.nabble.com/How-can-I-configure-different-types-in-Solr--tp22372731p22372731.html > Sent from the Solr - User mailing list archive at Nabble.com. > > -- View this message in context: http://www.nabble.com/How-can-I-configure-different-types-in-Solr--tp22372731p22406893.html Sent from the Solr - User mailing list archive at Nabble.com.