diff --git a/htroot/gsa/searchresult.java b/htroot/gsa/searchresult.java index ec7afb048..e1a150cc8 100644 --- a/htroot/gsa/searchresult.java +++ b/htroot/gsa/searchresult.java @@ -116,7 +116,7 @@ public class searchresult { post.put("defType", "edismax"); post.put(CommonParams.Q, solrQ.toString()); post.put(CommonParams.ROWS, post.remove("num")); - post.put(CommonParams.ROWS, Math.min(post.getInt(CommonParams.ROWS, 10), (authenticated) ? 5000 : 100)); + post.put(CommonParams.ROWS, Math.min(post.getInt(CommonParams.ROWS, 10), (authenticated) ? 100000000 : 100)); // set ranking if (post.containsKey("sort")) { diff --git a/source/net/yacy/document/Document.java b/source/net/yacy/document/Document.java index 3f2339422..6fada35c9 100644 --- a/source/net/yacy/document/Document.java +++ b/source/net/yacy/document/Document.java @@ -94,6 +94,7 @@ public class Document { private final double lon, lat; private final Object parserObject; // the source object that was used to create the Document private final Map> generic_facets; // a map from vocabulary names to the set of tags for that vocabulary which apply for this document + private final Date date; public Document(final DigestURI location, final String mimeType, final String charset, final Object parserObject, @@ -107,7 +108,8 @@ public class Document { final Map anchors, final Map rss, final Map images, - final boolean indexingDenied) { + final boolean indexingDenied, + final Date date) { this.source = location; this.mimeType = (mimeType == null) ? "application/octet-stream" : mimeType; this.charset = charset; @@ -143,6 +145,7 @@ public class Document { this.indexingDenied = indexingDenied; this.text = text == null ? "" : text; this.generic_facets = new HashMap>(); + this.date = date == null ? new Date() : date; } public Object getParserObject() { @@ -451,6 +454,10 @@ dc_rights return this.emaillinks; } + public Date getDate() { + return this.date; + } + public double lon() { return this.lon; } @@ -783,6 +790,7 @@ dc_rights final Map rss = new HashMap(); final Map images = new HashMap(); double lon = 0.0d, lat = 0.0d; + Date date = new Date(); for (final Document doc: docs) { @@ -821,6 +829,7 @@ dc_rights rss.putAll(doc.getRSS()); ContentScraper.addAllImages(images, doc.getImages()); if (doc.lon() != 0.0 && doc.lat() != 0.0) { lon = doc.lon(); lat = doc.lat(); } + if (doc.date.before(date)) date = doc.date; } // clean up parser data @@ -852,7 +861,8 @@ dc_rights anchors, rss, images, - false); + false, + date); } public static Map getHyperlinks(final Document[] documents) { diff --git a/source/net/yacy/document/content/DCEntry.java b/source/net/yacy/document/content/DCEntry.java index b7253eac4..adb822bb2 100644 --- a/source/net/yacy/document/content/DCEntry.java +++ b/source/net/yacy/document/content/DCEntry.java @@ -100,7 +100,9 @@ public class DCEntry extends MultiMapSolrParams { */ public Date getDate() { String d = this.get("docdatetime"); + if (d == null) d = this.get("date"); if (d == null) d = this.get("dc:date"); + if (d == null) d = this.get("last-modified"); if (d == null) return null; if (d.isEmpty()) return null; try { @@ -286,7 +288,8 @@ public class DCEntry extends MultiMapSolrParams { null, null, null, - false); + false, + getDate()); } public void writeXML(OutputStreamWriter os) throws IOException { diff --git a/source/net/yacy/document/parser/audioTagParser.java b/source/net/yacy/document/parser/audioTagParser.java index aa5f3131d..82044c2cc 100644 --- a/source/net/yacy/document/parser/audioTagParser.java +++ b/source/net/yacy/document/parser/audioTagParser.java @@ -30,6 +30,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -171,7 +172,8 @@ public class audioTagParser extends AbstractParser implements Parser { null, null, null, - false) + false, + new Date()) }; return docs; } catch (final Exception e) { @@ -193,7 +195,8 @@ public class audioTagParser extends AbstractParser implements Parser { null, null, null, - false + false, + new Date() )}; } finally { try { diff --git a/source/net/yacy/document/parser/csvParser.java b/source/net/yacy/document/parser/csvParser.java index c1bb6e0fa..6d50cbc93 100644 --- a/source/net/yacy/document/parser/csvParser.java +++ b/source/net/yacy/document/parser/csvParser.java @@ -30,6 +30,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.ArrayList; +import java.util.Date; import java.util.List; import net.yacy.document.AbstractParser; @@ -77,7 +78,8 @@ public class csvParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date())}; } private static String concatRow(String[] columns) { diff --git a/source/net/yacy/document/parser/docParser.java b/source/net/yacy/document/parser/docParser.java index 3e3c84dc1..3a402a1c0 100644 --- a/source/net/yacy/document/parser/docParser.java +++ b/source/net/yacy/document/parser/docParser.java @@ -28,6 +28,7 @@ package net.yacy.document.parser; import java.io.InputStream; +import java.util.Date; import net.yacy.document.AbstractParser; import net.yacy.document.Document; @@ -103,7 +104,8 @@ public class docParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date())}; return docs; } diff --git a/source/net/yacy/document/parser/genericParser.java b/source/net/yacy/document/parser/genericParser.java index 359746844..8fa1d85ff 100644 --- a/source/net/yacy/document/parser/genericParser.java +++ b/source/net/yacy/document/parser/genericParser.java @@ -25,6 +25,7 @@ package net.yacy.document.parser; import java.io.InputStream; +import java.util.Date; import net.yacy.cora.document.MultiProtocolURI; import net.yacy.document.AbstractParser; @@ -65,7 +66,8 @@ public class genericParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date())}; return docs; } } diff --git a/source/net/yacy/document/parser/html/ContentScraper.java b/source/net/yacy/document/parser/html/ContentScraper.java index 8cea42843..1e9dd363c 100644 --- a/source/net/yacy/document/parser/html/ContentScraper.java +++ b/source/net/yacy/document/parser/html/ContentScraper.java @@ -31,7 +31,9 @@ import java.io.IOException; import java.io.Writer; import java.net.MalformedURLException; import java.nio.charset.Charset; +import java.text.ParseException; import java.util.ArrayList; +import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedHashSet; @@ -45,6 +47,7 @@ import java.util.regex.Pattern; import javax.swing.event.EventListenerList; +import net.yacy.cora.date.ISO8601Formatter; import net.yacy.cora.document.MultiProtocolURI; import net.yacy.cora.sorting.ClusteredScoreMap; import net.yacy.cora.storage.SizeLimitedMap; @@ -848,6 +851,28 @@ public class ContentScraper extends AbstractScraper implements Scraper { if (s.toLowerCase().startsWith("url=")) return s.substring(4).trim(); return EMPTY_STRING; } + + public Date getDate() { + String content; + + // + content = this.metas.get("date"); + if (content != null) try {return ISO8601Formatter.FORMATTER.parse(content);} catch (ParseException e) {} + + // + content = this.metas.get("dc.date"); + if (content != null) try {return ISO8601Formatter.FORMATTER.parse(content);} catch (ParseException e) {} + + // + content = this.metas.get("dc:date"); + if (content != null) try {return ISO8601Formatter.FORMATTER.parse(content);} catch (ParseException e) {} + + // + content = this.metas.get("last-modified"); + if (content != null) try {return ISO8601Formatter.FORMATTER.parse(content);} catch (ParseException e) {} + + return new Date(); + } // parse location // diff --git a/source/net/yacy/document/parser/htmlParser.java b/source/net/yacy/document/parser/htmlParser.java index 14bd3eeab..2b5c05f93 100644 --- a/source/net/yacy/document/parser/htmlParser.java +++ b/source/net/yacy/document/parser/htmlParser.java @@ -141,7 +141,8 @@ public class htmlParser extends AbstractParser implements Parser { scraper.getAnchors(), scraper.getRSS(), scraper.getImages(), - scraper.indexingDenied()); + scraper.indexingDenied(), + scraper.getDate()); ppd.setFavicon(scraper.getFavicon()); return ppd; diff --git a/source/net/yacy/document/parser/images/genericImageParser.java b/source/net/yacy/document/parser/images/genericImageParser.java index f8915e9a8..39bf0df8d 100644 --- a/source/net/yacy/document/parser/images/genericImageParser.java +++ b/source/net/yacy/document/parser/images/genericImageParser.java @@ -35,6 +35,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -221,7 +222,8 @@ public class genericImageParser extends AbstractParser implements Parser { anchors, // anchors null, images, - false)}; // images + false, + new Date())}; // images } @Override diff --git a/source/net/yacy/document/parser/mmParser.java b/source/net/yacy/document/parser/mmParser.java index f92738a58..773e0a71f 100644 --- a/source/net/yacy/document/parser/mmParser.java +++ b/source/net/yacy/document/parser/mmParser.java @@ -27,6 +27,7 @@ package net.yacy.document.parser; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.xml.parsers.ParserConfigurationException; @@ -116,7 +117,8 @@ public class mmParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date())}; } private class FreeMindHandler extends DefaultHandler { diff --git a/source/net/yacy/document/parser/odtParser.java b/source/net/yacy/document/parser/odtParser.java index ccf5a3e44..19dcab095 100644 --- a/source/net/yacy/document/parser/odtParser.java +++ b/source/net/yacy/document/parser/odtParser.java @@ -30,6 +30,7 @@ package net.yacy.document.parser; import java.io.File; import java.io.InputStream; import java.util.ArrayList; +import java.util.Date; import java.util.Enumeration; import java.util.HashSet; import java.util.List; @@ -197,7 +198,9 @@ public class odtParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date() + )}; return docs; } catch (final Exception e) { if (e instanceof InterruptedException) throw (InterruptedException) e; diff --git a/source/net/yacy/document/parser/ooxmlParser.java b/source/net/yacy/document/parser/ooxmlParser.java index 5f7ca2a21..0f473956d 100644 --- a/source/net/yacy/document/parser/ooxmlParser.java +++ b/source/net/yacy/document/parser/ooxmlParser.java @@ -30,6 +30,7 @@ package net.yacy.document.parser; import java.io.File; import java.io.InputStream; import java.util.ArrayList; +import java.util.Date; import java.util.Enumeration; import java.util.HashSet; import java.util.List; @@ -182,7 +183,8 @@ public class ooxmlParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date())}; return docs; } catch (final Exception e) { if (e instanceof InterruptedException) throw (InterruptedException) e; diff --git a/source/net/yacy/document/parser/pdfParser.java b/source/net/yacy/document/parser/pdfParser.java index a364f0461..dbf6d1991 100644 --- a/source/net/yacy/document/parser/pdfParser.java +++ b/source/net/yacy/document/parser/pdfParser.java @@ -32,6 +32,7 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.util.Date; import org.apache.pdfbox.cos.COSName; import org.apache.pdfbox.exceptions.CryptographyException; @@ -125,6 +126,7 @@ public class pdfParser extends AbstractParser implements Parser { // extracting some metadata PDDocumentInformation info = pdfDoc.getDocumentInformation(); String docTitle = null, docSubject = null, docAuthor = null, docPublisher = null, docKeywordStr = null; + Date docDate = new Date(); if (info != null) { docTitle = info.getTitle(); docSubject = info.getSubject(); @@ -132,10 +134,9 @@ public class pdfParser extends AbstractParser implements Parser { docPublisher = info.getProducer(); if (docPublisher == null || docPublisher.isEmpty()) docPublisher = info.getCreator(); docKeywordStr = info.getKeywords(); + try {if (info.getModificationDate() != null) docDate = info.getModificationDate().getTime();} catch (IOException e) {} // unused: // info.getTrapped()); - // info.getCreationDate()); - // info.getModificationDate(); } info = null; @@ -218,7 +219,8 @@ public class pdfParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + docDate)}; } @SuppressWarnings("static-access") diff --git a/source/net/yacy/document/parser/pptParser.java b/source/net/yacy/document/parser/pptParser.java index c868823fc..59c770627 100644 --- a/source/net/yacy/document/parser/pptParser.java +++ b/source/net/yacy/document/parser/pptParser.java @@ -29,6 +29,7 @@ package net.yacy.document.parser; import java.io.BufferedInputStream; import java.io.InputStream; +import java.util.Date; import net.yacy.cora.util.ConcurrentLog; import net.yacy.document.AbstractParser; @@ -99,7 +100,8 @@ public class pptParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date())}; return docs; } catch (final Exception e) { if (e instanceof InterruptedException) throw (InterruptedException) e; diff --git a/source/net/yacy/document/parser/psParser.java b/source/net/yacy/document/parser/psParser.java index 208853959..f112927e2 100644 --- a/source/net/yacy/document/parser/psParser.java +++ b/source/net/yacy/document/parser/psParser.java @@ -34,6 +34,7 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.Date; import net.yacy.document.AbstractParser; import net.yacy.document.Document; @@ -115,7 +116,8 @@ public class psParser extends AbstractParser implements Parser { null, // anchors null, // rss null, // images - false)}; // indexingdenied + false, // indexingdenied + new Date())}; return docs; } catch (final Exception e) { diff --git a/source/net/yacy/document/parser/rdfParser.java b/source/net/yacy/document/parser/rdfParser.java index 69e0ab344..d14dacc37 100644 --- a/source/net/yacy/document/parser/rdfParser.java +++ b/source/net/yacy/document/parser/rdfParser.java @@ -27,6 +27,7 @@ package net.yacy.document.parser; import java.io.InputStream; import java.util.ArrayList; +import java.util.Date; import java.util.List; import net.yacy.document.AbstractParser; @@ -59,7 +60,7 @@ public class rdfParser extends AbstractParser implements Parser { String all = "rdfdatasource"; doc = new Document(url, mimeType, charset, null, null, null, singleList(""), "", - "", null, new ArrayList(0), 0, 0, all, null, null, null, false); + "", null, new ArrayList(0), 0, 0, all, null, null, null, false, new Date()); docs.add(doc); diff --git a/source/net/yacy/document/parser/rdfa/impl/RDFaParser.java b/source/net/yacy/document/parser/rdfa/impl/RDFaParser.java index ff011c1ea..0820cd84c 100644 --- a/source/net/yacy/document/parser/rdfa/impl/RDFaParser.java +++ b/source/net/yacy/document/parser/rdfa/impl/RDFaParser.java @@ -13,6 +13,7 @@ import java.io.Reader; import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.Date; import java.util.HashSet; import java.util.Set; @@ -80,7 +81,7 @@ public class RDFaParser extends AbstractParser implements Parser { } Document doc = new Document(url, mimeType, charset, null, null, null, singleList(""), "", - "", null, new ArrayList(0), 0, 0, null, null, null, null, false); + "", null, new ArrayList(0), 0, 0, null, null, null, null, false, new Date()); try { if (allTriples.length > 0) @@ -139,7 +140,7 @@ public class RDFaParser extends AbstractParser implements Parser { } Document doc = new Document(url, mimeType, charset, null, null, null, singleList(""), "", - "", null, new ArrayList(0), 0, 0, all, null, null, null, false); + "", null, new ArrayList(0), 0, 0, all, null, null, null, false, new Date()); return doc; } diff --git a/source/net/yacy/document/parser/rssParser.java b/source/net/yacy/document/parser/rssParser.java index 809b2d2e8..af8cb186e 100644 --- a/source/net/yacy/document/parser/rssParser.java +++ b/source/net/yacy/document/parser/rssParser.java @@ -102,7 +102,8 @@ public class rssParser extends AbstractParser implements Parser { anchors, null, new HashMap(), - false); + false, + item.getPubDate()); docs.add(doc); } catch (final MalformedURLException e) { continue; diff --git a/source/net/yacy/document/parser/rtfParser.java b/source/net/yacy/document/parser/rtfParser.java index 22844ec48..1a1495aa7 100644 --- a/source/net/yacy/document/parser/rtfParser.java +++ b/source/net/yacy/document/parser/rtfParser.java @@ -28,6 +28,7 @@ package net.yacy.document.parser; import java.io.InputStream; +import java.util.Date; import javax.swing.text.DefaultStyledDocument; import javax.swing.text.rtf.RTFEditorKit; @@ -84,7 +85,8 @@ public class rtfParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date())}; } catch (final Exception e) { if (e instanceof InterruptedException) throw (InterruptedException) e; if (e instanceof Parser.Failure) throw (Parser.Failure) e; diff --git a/source/net/yacy/document/parser/sevenzipParser.java b/source/net/yacy/document/parser/sevenzipParser.java index 97754e2f6..b7c7464d0 100644 --- a/source/net/yacy/document/parser/sevenzipParser.java +++ b/source/net/yacy/document/parser/sevenzipParser.java @@ -32,6 +32,7 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.Date; import net.yacy.cora.util.ConcurrentLog; import net.yacy.document.AbstractParser; @@ -72,7 +73,8 @@ public class sevenzipParser extends AbstractParser implements Parser { null, null, null, - false); + false, + new Date()); Handler archive; AbstractParser.log.fine("opening 7zip archive..."); try { diff --git a/source/net/yacy/document/parser/sidAudioParser.java b/source/net/yacy/document/parser/sidAudioParser.java index e1f13c8f0..aa3cf643d 100644 --- a/source/net/yacy/document/parser/sidAudioParser.java +++ b/source/net/yacy/document/parser/sidAudioParser.java @@ -27,6 +27,7 @@ package net.yacy.document.parser; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; +import java.util.Date; import java.util.HashMap; import java.util.Map; @@ -95,7 +96,8 @@ public class sidAudioParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date())}; } throw new Parser.Failure("Unable to parse SID file, file does seems to be incomplete (len = " + available + ").", location); } catch (final IOException ex) { diff --git a/source/net/yacy/document/parser/sitemapParser.java b/source/net/yacy/document/parser/sitemapParser.java index e0c080b07..ce42595fa 100644 --- a/source/net/yacy/document/parser/sitemapParser.java +++ b/source/net/yacy/document/parser/sitemapParser.java @@ -96,7 +96,8 @@ public class sitemapParser extends AbstractParser implements Parser { null, null, new HashMap(), - false); + false, + new Date()); docs.add(doc); } catch (final MalformedURLException e) { continue; diff --git a/source/net/yacy/document/parser/swfParser.java b/source/net/yacy/document/parser/swfParser.java index b42a43b89..311420a8a 100644 --- a/source/net/yacy/document/parser/swfParser.java +++ b/source/net/yacy/document/parser/swfParser.java @@ -30,6 +30,7 @@ package net.yacy.document.parser; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -125,7 +126,8 @@ public class swfParser extends AbstractParser implements Parser { anchors, // a map of extracted anchors null, null, - false)}; // a treeset of image URLs + false, + new Date())}; // a treeset of image URLs } catch (final Exception e) { if (e instanceof InterruptedException) throw (InterruptedException) e; diff --git a/source/net/yacy/document/parser/torrentParser.java b/source/net/yacy/document/parser/torrentParser.java index 5c61d5672..4dcf33d4d 100644 --- a/source/net/yacy/document/parser/torrentParser.java +++ b/source/net/yacy/document/parser/torrentParser.java @@ -28,6 +28,7 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.util.Date; import java.util.List; import java.util.Map; @@ -110,7 +111,8 @@ public class torrentParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date())}; } public static void main(String[] args) { diff --git a/source/net/yacy/document/parser/vcfParser.java b/source/net/yacy/document/parser/vcfParser.java index 867c6ea25..25726314c 100644 --- a/source/net/yacy/document/parser/vcfParser.java +++ b/source/net/yacy/document/parser/vcfParser.java @@ -33,6 +33,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; @@ -227,7 +228,8 @@ public class vcfParser extends AbstractParser implements Parser { anchors, // a map of extracted anchors null, null, // a treeset of image URLs - false)}; + false, + new Date())}; } catch (final Exception e) { if (e instanceof InterruptedException) throw (InterruptedException) e; if (e instanceof Parser.Failure) throw (Parser.Failure) e; diff --git a/source/net/yacy/document/parser/vsdParser.java b/source/net/yacy/document/parser/vsdParser.java index 9eb458456..6ea7b3885 100644 --- a/source/net/yacy/document/parser/vsdParser.java +++ b/source/net/yacy/document/parser/vsdParser.java @@ -29,6 +29,7 @@ package net.yacy.document.parser; import java.io.InputStream; import java.util.ArrayList; +import java.util.Date; import java.util.List; import net.yacy.cora.util.ConcurrentLog; @@ -115,7 +116,8 @@ public class vsdParser extends AbstractParser implements Parser { null, // a map of extracted anchors null, null, // a treeset of image URLs - false)}; + false, + new Date())}; } catch (final Exception e) { if (e instanceof InterruptedException) throw (InterruptedException) e; diff --git a/source/net/yacy/document/parser/xlsParser.java b/source/net/yacy/document/parser/xlsParser.java index 41c2a4244..850f4287a 100644 --- a/source/net/yacy/document/parser/xlsParser.java +++ b/source/net/yacy/document/parser/xlsParser.java @@ -28,6 +28,7 @@ package net.yacy.document.parser; import java.io.InputStream; +import java.util.Date; import net.yacy.cora.util.ConcurrentLog; import net.yacy.document.AbstractParser; @@ -129,7 +130,8 @@ public class xlsParser extends AbstractParser implements Parser { null, null, null, - false)}; + false, + new Date())}; } catch (final Exception e) { if (e instanceof InterruptedException) throw (InterruptedException) e; diff --git a/source/net/yacy/search/schema/CollectionConfiguration.java b/source/net/yacy/search/schema/CollectionConfiguration.java index 46295b3bb..107c04686 100644 --- a/source/net/yacy/search/schema/CollectionConfiguration.java +++ b/source/net/yacy/search/schema/CollectionConfiguration.java @@ -441,7 +441,11 @@ public class CollectionConfiguration extends SchemaConfiguration implements Seri add(doc, CollectionSchema.author, author); } if (allAttr || contains(CollectionSchema.content_type)) add(doc, CollectionSchema.content_type, new String[]{document.dc_format()}); - if (allAttr || contains(CollectionSchema.last_modified)) add(doc, CollectionSchema.last_modified, responseHeader == null ? new Date() : responseHeader.lastModified()); + if (allAttr || contains(CollectionSchema.last_modified)) { + Date lastModified = responseHeader == null ? new Date() : responseHeader.lastModified(); + if (document.getDate().before(lastModified)) lastModified = document.getDate(); + add(doc, CollectionSchema.last_modified, lastModified); + } if (allAttr || contains(CollectionSchema.keywords)) add(doc, CollectionSchema.keywords, document.dc_subject(' ')); if (allAttr || contains(CollectionSchema.synonyms_sxt)) { List synonyms = condenser.synonyms();