solr 的 field, copyfield ,dynamic field
2017-03-27 17:12
337 查看
Field:
Field就是一个字段,定义一个Field很简单:
[html] view plain copy
<field name="price" type="sfloat" indexed="true" stored="true"/>
基本上属性也和FieldType类似,他的属性会覆盖掉FieldType的同名属性。
CopyField(本段内容直接从solr中文网copy而来):
你可能想让document的一些字段可以多次使用。solr 有一个字段复制机制,可以提交多个不同类型字段集中到一个字段。字段复制主要涉及两个概念,source和destination,一个是要复制的字段,另一个是要复制到哪个字段,以下是个例子:
上例中,如果text字段有数据的话,cat字段的内容将被添加到text字段中。maxChars 参数,一个int类型参数,用于限制复制的字符数。
source和destination都支持通配符。以下是一个将所有以 _t 结尾的字段全部复制到text字段中。
其实说的简单一点,比如现在你要查询包涵"Java"的博客, 那么你肯定要查内容,标题是否包含Java,但是solr不能像SQL那样,where tittle like '%Java%' or content like '%Java%'. 这个时候copyField就派上用场了, 定义一个新字段,将title和content 复制到这个新字段,索引的时候,直接从这个新字段查询,这样就达到目地了。 这便是copyField的典型应用场景 。注意:如果dest由多个source构成,就需要将其指定为multiValued。
在网上找了一个例子:
[html] view plain copy
<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>
DynamicField:
动态字段(Dynamic fields)允许 solr 索引没有在 schema 中明确定义的字段。这个在忘记定义一些字段时很有用。动态字段可以让系统更灵活,通用性更强。
动态字段和常规字段类似,除了它名字中包含一个通配符外,在索引文档时,一个字段如果在常规字段中没有匹配时,将到动态字段中匹配。
假设schema中定义了一个叫*_i的动态动态字段,如果要索引一个叫 cost_i 的字段,但是 schema 中不存在 cost_i 的字段,这样 cost_i 将被索引到 *_i 字段中。
动态字段也是定义在 schema.xml 文件中,和其他字段一样,它也有个名词,字段类型,和属性。
建议在 schema.xml 定义一些基本的动态字段,以备扩展之用。
原文链接:http://blog.csdn.net/zl3450341/article/details/12849341
Field就是一个字段,定义一个Field很简单:
[html] view plain copy
<field name="price" type="sfloat" indexed="true" stored="true"/>
基本上属性也和FieldType类似,他的属性会覆盖掉FieldType的同名属性。
CopyField(本段内容直接从solr中文网copy而来):
你可能想让document的一些字段可以多次使用。solr 有一个字段复制机制,可以提交多个不同类型字段集中到一个字段。字段复制主要涉及两个概念,source和destination,一个是要复制的字段,另一个是要复制到哪个字段,以下是个例子:
source和destination都支持通配符。以下是一个将所有以 _t 结尾的字段全部复制到text字段中。
在网上找了一个例子:
[html] view plain copy
<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>
DynamicField:
动态字段(Dynamic fields)允许 solr 索引没有在 schema 中明确定义的字段。这个在忘记定义一些字段时很有用。动态字段可以让系统更灵活,通用性更强。
动态字段和常规字段类似,除了它名字中包含一个通配符外,在索引文档时,一个字段如果在常规字段中没有匹配时,将到动态字段中匹配。
假设schema中定义了一个叫*_i的动态动态字段,如果要索引一个叫 cost_i 的字段,但是 schema 中不存在 cost_i 的字段,这样 cost_i 将被索引到 *_i 字段中。
动态字段也是定义在 schema.xml 文件中,和其他字段一样,它也有个名词,字段类型,和属性。
原文链接:http://blog.csdn.net/zl3450341/article/details/12849341
相关文章推荐
- Solr5.3.1通过copyField设置多个field(字段)同时检索
- solr Field、CopyField、DynamicField
- 七、solr Field、CopyField、DynamicField区别
- solr Field、CopyField、DynamicField区别
- solr学习之四--------Field、CopyField、DynamicField
- SOLR---Field、CopyField、DynamicField
- solr学习Field、CopyField、DynamicField
- Solr中的Field、CopyField、DynamicField与其他Field
- solr 之Field、CopyField、DynamicField
- solr学习之四--------Field、CopyField、DynamicField
- Solr中的字段类型field type
- Solr特性:Schemaless Mode(自动往Schema中添加field)
- Nutch1.11 + Hadoop 2.7.2 + Solr 6.0 问题总结(NoSuchFieldError INSTANCE)
- solr ①date类型处理+②自定义field 改为int型。报错处理
- Solr高亮与Field权重
- omitNorms for field in solr schema(转载地址:http://blog.csdn.net/fengzanfeng/article/details/22056121)
- Faceting on a field in SolrCloud with docValues=true and indexed=false fails
- solr启动时报错org.apache.solr.common.SolrException: undefined field text的解决办法
- Solr中Field常用属性
- Solr Grouping / Field Collapsing(分组查询)