Or you can add a "type" field and filter on that. I do that with
type:movie and type:people. --wunder


On 3/6/09 9:10 AM, "Cheng Zhang" <zhangyongji...@yahoo.com> 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

Reply via email to