diff --git a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
index 8fd3b62f2..136ab12ef 100644
--- a/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
+++ b/src/main/java/org/codelibs/fess/mylasta/direction/FessConfig.java
@@ -290,6 +290,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
Title=title:string
Last-Save-Date=last_modified:date
Last-Modified=last_modified:date
+ ModDate=last_modified:pdf_date
*/
String CRAWLER_METADATA_NAME_MAPPING = "crawler.metadata.name.mapping";
@@ -2212,6 +2213,7 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
Title=title:string
Last-Save-Date=last_modified:date
Last-Modified=last_modified:date
+ ModDate=last_modified:pdf_date
* @return The value of found property. (NotNull: if not found, exception but basically no way)
*/
@@ -8619,8 +8621,9 @@ public interface FessConfig extends FessEnv, org.codelibs.fess.mylasta.direction
defaultMap.put(FessConfig.CRAWLER_FAILURE_URL_STATUS_CODES, "404");
defaultMap.put(FessConfig.CRAWLER_SYSTEM_MONITOR_INTERVAL, "60");
defaultMap.put(FessConfig.CRAWLER_METADATA_CONTENT_EXCLUDES, "resourceName,X-Parsed-By,Content-Encoding.*,Content-Type.*");
- defaultMap.put(FessConfig.CRAWLER_METADATA_NAME_MAPPING,
- "title=title:string\nTitle=title:string\nLast-Save-Date=last_modified:date\nLast-Modified=last_modified:date\n");
+ defaultMap
+ .put(FessConfig.CRAWLER_METADATA_NAME_MAPPING,
+ "title=title:string\nTitle=title:string\nLast-Save-Date=last_modified:date\nLast-Modified=last_modified:date\nModDate=last_modified:pdf_date\n");
defaultMap.put(FessConfig.CRAWLER_DOCUMENT_HTML_CONTENT_XPATH, "//BODY");
defaultMap.put(FessConfig.CRAWLER_DOCUMENT_HTML_LANG_XPATH, "//HTML/@lang");
defaultMap.put(FessConfig.CRAWLER_DOCUMENT_HTML_DIGEST_XPATH, "//META[@name='description']/@content");
diff --git a/src/main/java/org/codelibs/fess/taglib/FessFunctions.java b/src/main/java/org/codelibs/fess/taglib/FessFunctions.java
index 47be2ebac..f83136c26 100644
--- a/src/main/java/org/codelibs/fess/taglib/FessFunctions.java
+++ b/src/main/java/org/codelibs/fess/taglib/FessFunctions.java
@@ -27,6 +27,7 @@ import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Base64;
+import java.util.Calendar;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
@@ -40,6 +41,7 @@ import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.text.StringEscapeUtils;
+import org.apache.pdfbox.util.DateConverter;
import org.codelibs.core.lang.StringUtil;
import org.codelibs.fess.Constants;
import org.codelibs.fess.entity.FacetQueryView;
@@ -64,6 +66,8 @@ public class FessFunctions {
private static final String FACET_PREFIX = "facet.";
+ private static final String PDF_DATE = "pdf_date";
+
private static LoadingCache resourceHashCache = CacheBuilder.newBuilder().maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES).build(new CacheLoader() {
@Override
@@ -120,7 +124,13 @@ public class FessFunctions {
if (value == null) {
return null;
}
+
try {
+ if (PDF_DATE.equals(format)) {
+ final Calendar cal = DateConverter.toCalendar(value);
+ return cal != null ? cal.getTime() : null;
+ }
+
final long time = Joda.forPattern(format).parseMillis(value);
return new Date(time);
} catch (final Exception e) {
diff --git a/src/main/resources/fess_config.properties b/src/main/resources/fess_config.properties
index 3f08639fe..0437554e5 100644
--- a/src/main/resources/fess_config.properties
+++ b/src/main/resources/fess_config.properties
@@ -179,6 +179,7 @@ title=title:string\n\
Title=title:string\n\
Last-Save-Date=last_modified:date\n\
Last-Modified=last_modified:date\n\
+ModDate=last_modified:pdf_date\n\
# html
crawler.document.html.content.xpath=//BODY
diff --git a/src/test/java/org/codelibs/fess/taglib/FessFunctionsTest.java b/src/test/java/org/codelibs/fess/taglib/FessFunctionsTest.java
index 6eb31c1bd..923495620 100644
--- a/src/test/java/org/codelibs/fess/taglib/FessFunctionsTest.java
+++ b/src/test/java/org/codelibs/fess/taglib/FessFunctionsTest.java
@@ -41,5 +41,7 @@ public class FessFunctionsTest extends UnitFessTestCase {
date = FessFunctions.parseDate("2004-04-01T12:34:56.123+09:00");
assertEquals("2004-04-01T03:34:56.123Z", FessFunctions.formatDate(date));
+ date = FessFunctions.parseDate("D:20040401033456-05'00'", "pdf_date");
+ assertEquals("2004-04-01T08:34:56.000Z", FessFunctions.formatDate(date));
}
}