作者:闹闹依旧不闹 | 来源:互联网 | 2023-05-17 23:07
*****小白一枚,若您有高效的翻译工具,麻烦在评论中推荐给我,万分感谢!**********本人技术、翻译水平有限,此译文仅做参考!翻译时没有严格遵循原文思路和表达方式,见谅!****
*****小白一枚,若您有高效的翻译工具,麻烦在评论中推荐给我,万分感谢!*****
*****本人技术、翻译水平有限,此译文仅做参考!翻译时没有严格遵循原文思路和表达方式,见谅!*****
英文原文链接: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定义的字段类型和分析器。
和常规的字段一样,动态字段有名称,字段类型和可选项
推荐你像上面那样,在schema.xml文件中包含基本的动态字段映射。这些映射很有用。
【补充】http://wiki.apache.org/solr/SchemaXml#Dynamic_fields
Lucene强大的特性之一就是当你第一次创建索引的时候,不需要提前定义好每个字段。虽然Solr为字段提供了很强大的数据类型,但是依然保留了使用“动态字段”的灵活性。如果使用声明进行定义字段规则,那么当(文档中的)一个字段名称(在模式中)没有明确定义,但是匹配(模式中)某个动态字段的前缀或者后缀时,Solr可以通过这个动态字段定义的字段规则,理解应该使用哪种数据类型。
举个例子,下面这个动态字段声明告诉Solr,不管什么时候,当它看见(文档中)一个字段的名称以“_i”结尾,并且这个字段(在模式中)没有明确定义,那么应该用这个字段的名称动态创建一个整型类型的字段。
在这个name属性中,类似glob通配符匹配模式只能在开头或者结尾有一个星号“*”。更长的模式会先被匹配。如果相同大小的模式同时可以匹配,那么会使用在模式(schema)中第一个出现的。