solr的index schema中,除了支持基本数值类型的field,还支持一些特别的field,比如较常用的CopyField。以下面的schema配置片断为例:
<schema name="eshequn.post.db_post.0" version="1.1"
xmlns:xi="http://www.w3.org/2001/XInclude">
<fields>
<!-- for title -->
<field name="t" type="text" indexed="true" stored="false" />
<!-- for abstract -->
<field name="a" type="text" indexed="true" stored="false" />
<!-- for title and abstract -->
<field name="ta" type="text" indexed="true" stored="false" multiValued="true"/>
</fields>
<copyField source="t" dest="ta" />
<copyField source="a" dest="ta" />
</schema>
字段t是文章的标题,字段a是文章的摘要,字段ta是文章标题和摘要的联合。添加索引文档时,只需要传入t和a字段的内容,solr会自动索引ta字段。
这算不上多高级的功能,不过如果让你来实现这个功能,你会怎么做呢?我接手的搜索系统原来就有类似的功能,它的做法是,将t和a字段的文本合并,塞到ta
字段,无可厚非的做法。不过,有人注意到lucene的Document类提供的public final Field[]
getFields(String
name)类似函数不?也就是说,lucene中的一个name可以对应多个Field。solr在添加索引时,会检查field
name是不是copyField集合中的source,是的话就以其value构造dest
field。如果dest由多个source构成,就需要将其指定为multiValued。
对于查询来说,如果查询字段要来自多个字段,一种选择是使用CopyField,化多个字段为一个字段,缺点是不能区分各个字段的重要度差别。比如文章的标题和摘要,标题就要比摘要重要性更强,如果有这方面的要求,可以选择查询多个字段的做法。
分享到:
相关推荐
Solr 的 copyField 字段是指如何使用 copyField 字段来复制索引中的字段。我们可以使用 Solr 的 copyField 指令来实现字段的复制。 Solr 的搜索引擎 Solr 的搜索引擎是指如何使用 Solr 来实现搜索引擎。我们可以...
<copyField source="content" dest="text"/> ``` - 重启Tomcat服务,验证IK分词器的配置。 三、使用SolrJ操作Solr API 1. **添加SolrJ依赖**: - 添加SolrJ库所需的JAR包到项目构建路径,以便进行Solr API操作...
Solr的 CopyField: * 将item_title、item_sell_point、item_category_name、item_desc字段的值复制到item_keywords字段中。 Solr的优化: * 使用IKAnalyzer中文分词器对商品名称、商品卖点、商品描述进行分词...
<copyField source="name" dest="name"/> ``` - 重新启动Solr服务:在命令提示符窗口中切换到Solr的`example`目录,再次执行`java -jar start.jar`。 - 在Solr管理界面上测试中文分词效果:在Analysis模块中,...
4. **<copyField>**:将一个字段的内容复制到另一个字段,通常用于创建索引时的副本,以便于不同的搜索需求。 5. **** 和 ****:设置查询解析器的行为,如默认的布尔运算符(AND或OR)。 6. ****:定义文档相似度...
在Solr中,Core是一个核心概念,它代表了独立的索引库,类似于MySQL中的数据库。每个Solr服务可以包含多个Core,每个Core都可以拥有自己的配置、索引数据和Schema。在进行Core的管理和操作时,我们需要了解以下几个...
在Schema.xml中,开发者可以通过定义<copyField>来将多个字段的内容复制到一个复合字段中,这样在进行模糊字段查询时,用户输入的查询关键字可以被转化为查询复合字段。默认检索字段的定义则用于规定哪些字段应当被...
在`schema.xml`中配置`copyField`指令,将这两个域的值复制到`msg_all`,这样搜索时只需针对`msg_all`域即可。同时,注意5.0版本之后,`schema.xml`不再设置默认搜索域,而是在`solrconfig.xml`中配置默认搜索字段。...
"拷贝域"(copyField)的设置则允许将一个字段的值复制到另一个字段,常用于实现多字段搜索或者提升某些字段的搜索权重。 5. **部署环境** 该Demo是在Tomcat服务器上运行的,Tomcat是一款广泛应用的Java Servlet...
- `<copyField>`:用于将一个或多个字段的值复制到另一个字段中,便于集中管理索引。 - `source`:源字段名。 - `dest`:目标字段名。 - **目标域配置示例**: ```xml ``` 其中`text_general`类型定义如下:...
### Solr中的schema.xml详解 在Solr搜索服务器中,`schema.xml` 文件扮演着核心配置文件的角色,它定义了索引字段、字段类型以及其他与数据结构相关的设置。正确理解和配置`schema.xml`对于实现高性能的全文检索...