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 <[email protected]>
> To: [email protected]
> 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.