本文主要介绍“如何使用字段、复制字段和动态字段”。在日常操作中,相信很多人对于如何使用Field、CopyField、DynamicField都有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮你解答“如何使用Field、CopyField、DynamicField”的疑惑!接下来,请和边肖一起学习!
字段:
字段就是字段。定义字段非常简单:
基本上,属性类似于字段类型,它的属性将覆盖具有相同名称的字段类型的属性。
CopyField(本段内容直接从solr中文网站复制而来):
您可能希望文档的某些字段被多次使用。Solr具有字段复制机制,可以将不同类型的多个字段提交到一个字段中。字段复制主要涉及两个概念,源和目的。一个是要复制的字段,另一个是要复制的字段。以下是一个例子:
一个
复制字段
来源
=
猫
建筑环境及HVAC系统模拟的软件平台
=
“文本”
maxChars
=
'30000'
/在上例中,如果文本字段中有数据,cat字段的内容将被添加到文本字段中。MaxChars参数是一个int参数,用于限制复制字符的数量。
源和目标都支持通配符。以下是文本字段中以_t结尾的所有字段的副本。
一个
复制字段
来源
=
*_t '
建筑环境及HVAC系统模拟的软件平台
=
“文本”
maxChars
=
'25000'
/其实简单来说,比如你现在想查询包含‘Java’的博客,就必须检查内容以及标题是否包含Java,但是solr不能像SQL一样,其中title像“% Java%”或者content像“% Java%”。这时,copyField就派上用场了,定义一个新的字段,把标题和内容复制到这个新的字段中,直接索引。这是copyField的典型应用场景。注:如果目的地由多个组成
ource构成,就需要将其指定为multiValued。
在网上找了一个例子:
<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 文件中,和其他字段一样,它也有个名词,字段类型,和属性。
1 | < dynamicField name = "*_i" type = "sint" indexed = "true" stored = "true" /> |
建议在 schema.xml 定义一些基本的动态字段,以备扩展之用。
到此,关于“Field、CopyField、DynamicField怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/155618.html