码迷,mamicode.com
首页 > 其他好文 > 详细

Solr中的Field、CopyField、DynamicField

时间:2015-10-06 19:25:29      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:

Field:

   Field就是一个字段,定义一个Field很简单:

 

 

Xml代码  技术分享
  1. <span style="font-size: 20px;"><field name="tile" type="string" indexed="true" stored="true"/></span>  

 Field的属性也和FieldType类似,他的属性会覆盖掉FieldType的同名属性。

 

 

CopyField

       你可能想让document的一些字段可以多次使用。solr 有一个字段复制机制,可以提交多个不同类型字段集中到一个字段,如将title字段和content字段复制到一个新的字段中,这样新的字段中就具有这两个字段的内容了。字段复制主要涉及两个概念,source和destination,一个是要复制的字段,另一个是要复制到哪个字段,以下是个例子:

<copyField source="cat" dest="text" maxChars="30000" />

上例中,如果cat字段有数据的话,cat字段的内容将被添加到text字段中。maxChars 参数,一个int类型参数,用于限制复制的字符数。source和destination都支持通配符。以下是一个将所有以 _t 结尾的字段全部复制到text字段中。

<copyField source="*_t" dest="text" maxChars="25000" />

 

       其实说的简单一点,比如现在你要查询包涵"Java"的博客, 那么你肯定要查内容,标题是否包含Java,但是solr不能像SQL那样,where tittle like ‘%Java%‘  or  content like ‘%Java%‘.   这个时候copyField就派上用场了, 定义一个新字段,将title和content 复制到这个新字段,索引的时候,直接从这个新字段查询,这样就达到目地了。  这便是copyField的典型应用场景。

 

    注意:如果dest由多个source构成,就需要将其指定为multiValued。   

 

 

Xml代码  技术分享
  1. <schema name="eshequn.post.db_post.0" version="1.1"    
  2.     xmlns:xi="http://www.w3.org/2001/XInclude">    
  3.      <fields>    
  4.         <!-- for title -->    
  5.    <field name="t" type="text" indexed="true" stored="false" />    
  6.    <!-- for abstract -->    
  7.    <field name="a" type="text" indexed="true" stored="false" />    
  8.     <!-- for title and abstract -->    
  9.  <field name="ta" type="text" indexed="true" stored="false" multiValued="true"/>    
  10.     </fields>    
  11.     <copyField source="t" dest="ta" />    
  12.     <copyField source="a" dest="ta" />    
  13. </schema>    

 

 

 

DynamicField:

        动态字段(Dynamic fields)允许 solr 索引那些没有在 schema 中明确定义的字段。这个功能在忘记定义一些字段时很有用。动态字段可以让系统更灵活,通用性也更强。
       动态字段和常规字段类似,除了它名字中包含一个通配符外,在索引文档时,一个字段如果在常规字段中没有匹配时,将到动态字段中匹配。
       假设schema中定义了一个叫*_i的动态动态字段,如果要索引一个叫 cost_i 的字段,但是 schema 中不存在 cost_i 的字段,这样 cost_i  将被索引到 *_i 字段中。
动态字段也是定义在 schema.xml 文件中,和其他字段一样,它也有名词,字段类型,和属性。
 

Solr中的Field、CopyField、DynamicField

标签:

原文地址:http://www.cnblogs.com/lucene110/p/4857515.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!