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.

Reply via email to