Solr中配置文件schema.xml之copyField 与multiValued用途

http://hbin8668.blog.163.com/blog/static/178844311201375113752169/

copyField multiValued用途

在我们的应用中经常会有这种情形:当用户输入某个字符串查找时,需要如果在标题及内容中存在这个字会串时均要把记录加载出来,通过引入copyFieldmultiValue这两个标签便可解决这种问题。如:

1.   <schema name="eshequn.post.db_post.0" version="1.1" 

2.       xmlns:xi="http://www.w3.org/2001/XInclude"> 

3.        <fields> 

5.           <field name="title" type="text" indexed="true" stored="false" /> 

6.          <field name="content" type="text" indexed="true" stored="false" /> 

8.           <field name="tc" type="text" indexed="true" stored="false" multiValued="true"/> 

10.      </fields> 

11.      <copyField source="title" dest="tc" /> 

12.      <copyField source="content" dest="tc" /> 

  </schema>

字段title是文章的标题,字段content是文章的摘要,字段tc是文章标题和内容的联合。添加索引文档时,只需要传入titlecontent字段的内容,solr会自动索引ta字段。 这算不上多高级的功能,不过如果让你来实现这个功能,你会怎么做呢?我接手的搜索系统原来就有类似的功能,它的做法是,将ta字段的文本合并,塞到ta 字段,无可厚非的做法。

不过,有人注意到luceneDocument类提供的public final Field[] getFields(String name)类似函数不?也就是说,lucene中的一个name可以对应多个Fieldsolr在添加索引时,会检查field name是不是copyField集合中的source,是的话就以其value构造dest field。如果dest由多个source构成,就需要将其指定为multiValued对于查询来说,如果查询字段要来自多个字段,一种选择是使用CopyField,化多个字段为一个字段,缺点是不能区分各个字段的重要度差别。比如文章的标题和摘要,标题就要比摘要重要性更强,如果有这方面的要求,可以选择查询多个字段的做法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值