Field:
Field就是一个字段,定义一个Field很简单:
<field name="price" type="sfloat" indexed="true" stored="true"/>
基本上属性也和FieldType类似,他的属性会覆盖掉FieldType的同名属性。
CopyField : 允许提交多个不同类型的字段集中到一个字段。
<copyField source="cat" dest="text" maxChars="30000" />
上例中,如果text字段有数据的话,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。
<schema name="eshequn.post.db_post.0" version="1.1"
xmlns:xi="http://www.w3.org/2001/XInclude">
<fields>
<!-- for title -->
<field name="title" type="text" indexed="true" stored="false" />
<!-- for content -->
<field name="content" type="text" indexed="true" stored="false" />
<!-- for title and content -->
<field name="tc" type="text" indexed="true" stored="false"
multiValued="true"/>
</fields>
<copyField source="title" dest="tc" />
<copyField source="content" dest="tc" />
</schema>
<dynamicField name="*_i" type="sint" indexed="true" stored="true"/>
建议在 schema.xml 定义一些基本的动态字段,以备扩展之用。
本文介绍Solr中的Field、CopyField与DynamicField的概念及应用。Field是Solr的基本单位,CopyField允许将多个字段内容复制到一个字段中,方便全文检索;DynamicField则增加了系统的灵活性,可以索引未在schema中明确列出的字段。
1830

被折叠的 条评论
为什么被折叠?



