0
Solr 4.10.1 버전에서 DocExpirationUpdateProcessorFactoryfactory를 사용하려고합니다.DocExpirationUpdateProcessorFactory가 레코드를 삭제하지 않습니다.
나는 내 solrconfig.xml
<updateRequestProcessorChain default="true">
<processor class="solr.UUIDUpdateProcessorFactory">
<str name="fieldName">id</str>
</processor>
<processor class="solr.TimestampUpdateProcessorFactory">
<str name="fieldName">timestamp</str>
</processor>
<processor class="solr.processor.DocExpirationUpdateProcessorFactory">
<int name="autoDeletePeriodSeconds">30</int>
<str name="ttlFieldName">ttl</str>
<str name="expirationFieldName">expire_at</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
에 다음을 포함했다 그리고 난 당신이 내가 사는 시간을 설정하고 볼 수 있듯이 내의 schema.xml
<field name="timestamp" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/>
<field name="ttl" type="date" indexed="true" stored="true" default="NOW+60SECONDS" multiValued="false"/>
<field name="expire_at" type="date" indexed="true" stored="true" multiValued="false"/>
에 다음을 포함했다 60 초, 문서를 삽입 할 때마다 30 초마다 삭제할 것인지 확인한 다음 분이 지나지 않아 몇 시간 또는 몇 시간 후에 삭제되는지 확인합니다.
이것은 색인 된 문서에서 볼 수있는 것입니다. 문제가 무엇인지 알려주십시오. 아래에서 볼 수 있듯이 expire_at 필드는 Solr 문서에서 절대로 생성되지 않습니다.
나는 TTL 타입date
이 될 수있는 설정 되었기 때문이다
"id": "3888a8ac-fbc4-437a-8248-132384753c00",
"timestamp": "2015-02-04T04:09:21.29Z",
"_version_": 1492147724740460500,
"ttl": "2015-02-04T04:10:21.29Z"
"NOW+60SECONDS"
으로 어떻게 당신은 그것을 실행에 도착하지 않았다? 나는 같은 문제를 가지고있다. DocExpirationUpdateProcessorFactory는 절대로 호출되지 않습니다. expire_at 필드는 절대로 계산되지 않습니다. 내가 뭘 잘못하고 있을지 제안 해 줄 수 있니? –나는 질문에 답했다. 설정을 올리시겠습니까? – user1965449
나는 그것을 작동시켰다. 나는 ttlFieldName을 설정하고 있었지만 들어오는 문서에 설정되지 않았습니다. 스키마에서는 기본값으로 문자열로 언급되었습니다. 하지만 expiredFieldName은 들어오는 문서에 ttlFieldName이있는 경우에만 계산됩니다. 나는 방법없는 모드를 사용하고 있습니다. –