【Solr 5.1系列】Apache Solr 5.1参考指南(二)动态字段

来源:互联网 发布:数据库器 编辑:程序博客网 时间:2024/05/12 05:06

*****小白一枚,若您有高效的翻译工具,麻烦在评论中推荐给我,万分感谢!*****

*****本人技术、翻译水平有限,此译文仅做参考!翻译时没有严格遵循原文思路和表达方式,见谅!*****

英文原文链接:http://archive.apache.org/dist/lucene/solr/ref-guide/apache-solr-ref-guide-5.1.pdf


动态字段Dynamic Field


动态字段允许Solr索引你在模式(schema)中没有明确定义的字段(field)。如果你发现你忘了定义一个或多个字段,那么动态字段就派上用场了。动态字段可以让你的应用比较健壮。
动态字段除了名称中带有一个通配符,其他都和常规的字段一样。当你索引文档时,如果一个字段没有匹配到任何明确定义的字段,那么可以尝试和动态字段进行匹配。
举个例子,假设你的模式中包含一个名称为*_i的动态字段。如果你试图索引一篇有cost_i字段的文档,但是在模式中没有明确定义cost_i字段,那么cost_i字段会匹配动态字段*_i,并拥有动态字段*_i定义的字段类型和分析器。

和常规的字段一样,动态字段有名称,字段类型和可选项

<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
推荐你像上面那样,在schema.xml文件中包含基本的动态字段映射。这些映射很有用。


【补充】http://wiki.apache.org/solr/SchemaXml#Dynamic_fields

Lucene强大的特性之一就是当你第一次创建索引的时候,不需要提前定义好每个字段。虽然Solr为字段提供了很强大的数据类型,但是依然保留了使用“动态字段”的灵活性。如果使用<dynamicField>声明进行定义字段规则,那么当(文档中的)一个字段名称(在模式中)没有明确定义,但是匹配(模式中)某个动态字段的前缀或者后缀时,Solr可以通过这个动态字段定义的字段规则,理解应该使用哪种数据类型。


举个例子,下面这个动态字段声明告诉Solr,不管什么时候,当它看见(文档中)一个字段的名称以“_i”结尾,并且这个字段(在模式中)没有明确定义,那么应该用这个字段的名称动态创建一个整型类型的字段。

<dynamicField name="*_i" type="integer" indexed="true" stored="true"/>
在这个name属性中,类似glob通配符匹配模式只能在开头或者结尾有一个星号“*”。更长的模式会先被匹配。如果相同大小的模式同时可以匹配,那么会使用在模式(schema)中第一个出现的。

0 0
原创粉丝点击