加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 08:36:38 所属栏目:百科 来源:网络整理
导读:原文链接:http://hbin8668.blog.163.com/blog/static/178844311201375113752169/ copyField 与 multiValued 用途 在我们的应用中经常会有这种情形:当用户输入某个字符串查找时,需要如果在标题及内容中存在这个字会串时均要把记录加载出来,通过引入 copyF

原文链接:http://hbin8668.blog.163.com/blog/static/178844311201375113752169/

copyFieldmultiValued用途

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

1.<schemaname="eshequn.post.db_post.0"version="1.1"

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

3.<fields>

5.<fieldname="title"type="text"indexed="true"stored="false"/>6. <fieldname="content"type"text"indexed"true"stored"false"/>

8. "tc"multiValued"true"10.</fields>11.<copyFieldsource="title"dest="tc"12.<copyFieldsource="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,化多个字段为一个字段,缺点是不能区分各个字段的重要度差别。比如文章的标题和摘要,标题就要比摘要重要性更强,如果有这方面的要求,可以选择查询多个字段的做法。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读