我正在尝试使用Solr-6的Solr自动删除功能。我在managed-schema.xml和solrconfig.xml中进行了以下更改。
管理型模式
<!--expiration date field-->
<field name="eDate" type="date" multiValued="false" indexed="true" stored="true"/>
<field name="ttl" type="string" multiValued="false" indexed="true" stored="true" default="+90SECONDS"/>
solrconfig
<processor class="solr.processor.DocExpirationUpdateProcessorFactory">
<int name="autoDeletePeriodSeconds">30</int>
<str name="ttlFieldName">ttl</str>
<str name="expirationFieldName">eDate</str>
</processor>
如果我在传入文档中显式设置ttl字段或者在更新请求中设置ttl请求参数,我可以按预期使用自动删除功能。 但是,如果我没有显式设置ttl字段,我想使用托管模式中指定的ttl的默认值。当我尝试这个时,使用默认值生成ttl字段,但不生成相应的eDate字段。
有可能做我想做的事吗? 如果是,那我该怎么做?如果您需要任何进一步的细节,请发表评论。
答案 0 :(得分:2)
我无法通过default
描述中的field
param使其正常工作,但我通过添加solr.DefaultValueUpdateProcessorFactory
在我的更新链中,我有这个:
<processor class="solr.DefaultValueUpdateProcessorFactory">
<str name="fieldName">ttl</str>
<str name="value">+15SECONDS</str>
</processor>
<processor class="solr.processor.DocExpirationUpdateProcessorFactory">
<int name="autoDeletePeriodSeconds">5</int>
<str name="ttlFieldName">ttl</str>
<str name="expirationFieldName">eDate</str>
</processor>
我更改值以更快地测试:)链接到工作code