hhnf333 发表于 2016-12-16 09:59:27

solr的multivalued使用说明(转载)

      solr的schema.xml配置文件在配置Filed的时候,有个属性:
       MutiValued:true if this field may containmutiple values per documents,这个说明有点模糊,下面结合实际应用,列举两个不同的例子。
       例子一:一个field有多个值,值来自同一filed

 view plaincopy 



[*]<fields>  
[*] <!-- general -->  
[*] <field name="id"      type="int"      indexed="true"  stored="true"  multiValued="false" required="true"/>  
[*] <field name="planTime"    type="tdate"   indexed="true"  stored="false"  multiValued="false" />  
[*] <field name="state"   type="string"   indexed="true"  stored="false"  multiValued="false" />  
[*] <field name="overDate"   type="string"   indexed="true"  stored="false"  multiValued="false" />  
[*] <field name="type"   type="int"   indexed="true"  stored="false"  multiValued="false" />  
[*] <field name="contactName"   type="textComplex"   indexed="true"  stored="false"  multiValued="false" />  
[*] <field name="contactTel"    type="string"   indexed="true"  stored="false"  multiValued="false" />  
[*] <field name="customer"    type="textComplex"   indexed="true"  stored="false"  multiValued="false" />  
[*] <field name="alias"    type="textComplex"   indexed="true"  stored="false"  multiValued="false" />  
[*] <field name="englishName"    type="textComplex"   indexed="true"  stored="false"  multiValued="false" />  
[*] <field name="executor"    type="int"   indexed="true"  stored="true"  multiValued="true" />  
[*] <!--  
[*] <field name="keywords" type="text" indexed="true" stored="false" multiValued="true"/>  
[*]lt;/fields>  

       其中:
 view plaincopy 



[*]<field name="executor"    type="int"   indexed="true"  stored="true"  multiValued="true" /  

 
    最后看下查询效果:
    
      从上图看书,executor这个field可以多个值,任何executor:29 OR executor:40,类似查询都能查出id为3的记录。
     附注:使用solrj建此索引时,定义成集合类型即可,如:

 view plaincopy 



[*]@Field  
[*]private Set<Integer> executor;  
[*]  
[*]public Set<Integer> getExecutor() {  
[*]    return executor;  
[*]}  
[*]  
[*]public void setExecutor(Set<Integer> executor) {  
[*]    this.executor = executor;  
[*]}  

         
 
       例子二:类似综合搜索,结合copyFiled使用,多个Filed拷贝到该Field上
       
         从上图看出keywords区域,是name、introduction、industryName三个的集合,无论搜索name、introduction、industryName中任意一个,都能通过keywords搜索出来。
 
  原文地址:http://blog.csdn.net/alen1985/article/details/8538942
页: [1]
查看完整版本: solr的multivalued使用说明(转载)