知识点
相关文章
更多最近更新
更多Solr4.7---Field、CopyField、DynamicField
2019-03-27 01:21|来源: 网路
Field:
Field就是一个字段,定义一个Field很简单:
基本上属性也和FieldType类似,他的属性会覆盖掉FieldType的同名属性。
CopyField(本段内容直接从solr中文网copy而来):
你可能想让document的一些字段可以多次使用。solr 有一个字段复制机制,可以提交多个不同类型字段集中到一个字段。字段复制主要涉及两个概念,source和destination,一个是要复制的字段,另一个是要复制到哪个字段,以下是个例子:
1
|
<
copyField
source
=
"cat"
dest
=
"text"
maxChars
=
"30000"
/>
|
上例中,如果text字段有数据的话,cat字段的内容将被添加到text字段中。maxChars 参数,一个int类型参数,用于限制复制的字符数。
source和destination都支持通配符。以下是一个将所有以 _t 结尾的字段全部复制到text字段中。
1
|
<
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="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 定义一些基本的动态字段,以备扩展之用。
转自:http://my.oschina.net/MrMichael/blog/224419
相关问答
更多-
solr中动态字段dynamicField 标签的意义?是什么[2019-11-01]
type(为之前定义过的各种FieldType),indexed(是否被索引),stored(是否被储存),multiValued(是否有多个值) -
我写了一篇关于它的整篇博文: http://www.sestevez.com/brians-loader-unloader-for-search/ TL; DR你必须重新插入数据,但帖子有一个关于如何使用cassandra-loader和awk的内容。 I wrote a whole blog post about it: http://www.sestevez.com/brians-loader-unloader-for-search/ TL;DR you have to re-insert the da ...
-
DynamicField和CopyField名称不是正则表达式。 *通配符只能用于表示前缀或后缀,但不能同时使用两者。 DynamicField and CopyField names are not regular expressions. The * wildcard can only be used to indicate prefix or suffix, but not both.
-
分析器链用于字段的标记化 (可搜索)表示。 您显示的结果是原始存储的表示。 这就是为什么你不会看到任何改变的原因。 相反,请在字段分析器屏幕或模式描述字段(带有用于加载令牌的复选标记的字段)中检查Admin界面中的标记化表示。 或者,对于快速测试,使用my_field作为构面,因为构面使用实际的标记。 如果您尝试更改实际存储的表示形式以及索引的表示形式,则最好使用CloneFieldUpdateProcessorFactory和RegexReplaceProcessorFactory使用UpdateRequ ...
-
无法搜索我在schema.xml中定义的字段,如copyField(Can not search in the field which I defined in schema.xml like copyField)[2022-08-09]
尝试使用change stored = true如果在搜索期间应该可以检索字段的值,则为True。 try with change stored=true True if ... -
@MatsLindh,看起来我实际上需要擦除索引(删除它)并重新上载文档。 然后它复制。 @MatsLindh, it looks like I actually needed to erase the index (delete it) and reupload the documents. Then it copies.
-
如何使用Sitecore 7.5和Solr 4.7增强特定字段?(How can I boost a particular field using Sitecore 7.5 and Solr 4.7?)[2023-01-18]
这没有内置的功能。 但是,从我的头顶开始,我想可以近似它。 例如。 如果您的内容编辑人员有权访问Sitecore树的模板部分,则可以扩展"Template Field"模板。 添加一个名为Boost的数字字段。 然后在模板中的任何字段上,他们可以分配数值 当您编写查询时,您可以查找模板中相关字段的赋值,并使用Boost方法将其应用于谓词。 当然,这种方法有许多不同的变体。 这真的只是一块骨头。 听起来就像你手上有一个好的市场模块。 There is no in-built functionality for ... -
copyField链(copyField chain)[2024-02-17]
Documentation @ http://wiki.apache.org/solr/SchemaXml#Copy_Fields 副本在流源级完成,没有副本馈送到另一个副本。 将复制字段作为复制字段标记的来源不起作用。 复制域源必须是实际字段,它具有一些值并且不会级联。 您也可以查看http://lucene.472066.n3.nabble.com/does-copyField-recurse-td2450208.html Documentation @ http://wiki.apache.org/s ... -
Solr _version_字段错误(Solr _version_ field error)[2022-11-19]
我试图用schema.xml创建一个Solr核心并且工作得很好。 我已经创建了一个github项目,只是尝试克隆它 git clone https://github.com/freedev/mailstore 并从此邮件存储配置创建新核心。 bin/solr create -c mailstore -d /path/to/github/mailstore/conf I've tried to create a Solr core with your schema.xml and works pret ... -
Solr4.1上的CopyField问题(CopyField issue on Solr4.1)[2023-10-22]
Solr 4.1以压缩方式维护存储的字段,这可以解释索引大小的减少。 也,Documentation @ http://wiki.apache.org/solr/SchemaXml#Copy_Fields 副本在流源级别完成,没有副本提供到另一个副本。 将copyfield作为copyfield标记的源不起作用。 复制域源必须是实际字段,它具有一些值并且不会级联。 你也可以查看http://lucene.472 ...