소스 검색

fix #1080 update expires

Shinsuke Sugaya 8 년 전
부모
커밋
0a74cdf7a4
2개의 변경된 파일18개의 추가작업 그리고 5개의 파일을 삭제
  1. 11 3
      src/main/java/org/codelibs/fess/crawler/FessCrawlerThread.java
  2. 7 2
      src/main/java/org/codelibs/fess/helper/IndexingHelper.java

+ 11 - 3
src/main/java/org/codelibs/fess/crawler/FessCrawlerThread.java

@@ -127,8 +127,8 @@ public class FessCrawlerThread extends CrawlerThread {
                 final Date expires = DocumentUtil.getValue(document, fessConfig.getIndexFieldExpires(), Date.class);
                 final Date expires = DocumentUtil.getValue(document, fessConfig.getIndexFieldExpires(), Date.class);
                 if (expires != null && expires.getTime() < System.currentTimeMillis()) {
                 if (expires != null && expires.getTime() < System.currentTimeMillis()) {
                     final Object idValue = document.get(fessConfig.getIndexFieldId());
                     final Object idValue = document.get(fessConfig.getIndexFieldId());
-                    if (idValue != null) {
-                        indexingHelper.deleteDocument(fessEsClient, idValue.toString());
+                    if (idValue != null && !indexingHelper.deleteDocument(fessEsClient, idValue.toString())) {
+                        logger.debug("Failed to delete expired document: " + url);
                     }
                     }
                     return true;
                     return true;
                 }
                 }
@@ -154,7 +154,9 @@ public class FessCrawlerThread extends CrawlerThread {
                 }
                 }
                 if (httpStatusCode == 404) {
                 if (httpStatusCode == 404) {
                     storeChildUrlsToQueue(urlQueue, getAnchorSet(document.get(fessConfig.getIndexFieldAnchor())));
                     storeChildUrlsToQueue(urlQueue, getAnchorSet(document.get(fessConfig.getIndexFieldAnchor())));
-                    indexingHelper.deleteDocument(fessEsClient, id);
+                    if (!indexingHelper.deleteDocument(fessEsClient, id)) {
+                        logger.debug("Failed to delete 404 document: " + url);
+                    }
                     return false;
                     return false;
                 } else if (responseData.getLastModified() == null) {
                 } else if (responseData.getLastModified() == null) {
                     return true;
                     return true;
@@ -170,6 +172,12 @@ public class FessCrawlerThread extends CrawlerThread {
 
 
                     storeChildUrlsToQueue(urlQueue, getAnchorSet(document.get(fessConfig.getIndexFieldAnchor())));
                     storeChildUrlsToQueue(urlQueue, getAnchorSet(document.get(fessConfig.getIndexFieldAnchor())));
 
 
+                    final Date documentExpires = crawlingInfoHelper.getDocumentExpires(crawlingConfig);
+                    if (documentExpires != null
+                            && !indexingHelper.updateDocument(fessEsClient, id, fessConfig.getIndexFieldExpires(), documentExpires)) {
+                        logger.debug("Failed to update " + fessConfig.getIndexFieldExpires() + " at " + url);
+                    }
+
                     return false;
                     return false;
                 }
                 }
             } finally {
             } finally {

+ 7 - 2
src/main/java/org/codelibs/fess/helper/IndexingHelper.java

@@ -121,9 +121,14 @@ public class IndexingHelper {
         }
         }
     }
     }
 
 
-    public void deleteDocument(final FessEsClient fessEsClient, final String id) {
+    public boolean updateDocument(final FessEsClient fessEsClient, final String id, final String field, final Object value) {
         final FessConfig fessConfig = ComponentUtil.getFessConfig();
         final FessConfig fessConfig = ComponentUtil.getFessConfig();
-        fessEsClient.delete(fessConfig.getIndexDocumentUpdateIndex(), fessConfig.getIndexDocumentType(), id, 0);
+        return fessEsClient.update(fessConfig.getIndexDocumentUpdateIndex(), fessConfig.getIndexDocumentType(), id, field, value);
+    }
+
+    public boolean deleteDocument(final FessEsClient fessEsClient, final String id) {
+        final FessConfig fessConfig = ComponentUtil.getFessConfig();
+        return fessEsClient.delete(fessConfig.getIndexDocumentUpdateIndex(), fessConfig.getIndexDocumentType(), id, 0);
     }
     }
 
 
     public int deleteDocumentByUrl(final FessEsClient fessEsClient, final String url) {
     public int deleteDocumentByUrl(final FessEsClient fessEsClient, final String url) {