@Override
  public Document asDocument(NewsItem newsItem) {
    Document doc = new Document();

    doc.add(new IntField(ITEM_ID, newsItem.itemID(), Field.Store.YES));
    doc.add(new StringFieldWithTermVectors(YEAR, String.valueOf(newsItem.date().getYear())));
    doc.add(new StringFieldWithTermVectors(MONTH, String.valueOf(newsItem.date().getMonth())));
    doc.add(new StringFieldWithTermVectors(DAY, String.valueOf(newsItem.date().getDay())));
    doc.add(new TextFieldWithTermVectors(TITLE, newsItem.title()));
    doc.add(new TextFieldWithTermVectors(HEADLINE, newsItem.headline()));
    doc.add(new TextFieldWithTermVectors(DATELINE, newsItem.dateline()));
    doc.add(new TextFieldWithTermVectors(TEXT, newsItem.text()));

    for (Map.Entry<String, String> entry : newsItem.codes().entries()) {
      doc.add(new StringFieldWithTermVectors(entry.getKey(), entry.getValue()));
    }
    for (Map.Entry<String, String> entry : newsItem.dcs().entrySet()) {
      doc.add(new StringFieldWithTermVectors(entry.getKey(), entry.getValue()));
    }
    return doc;
  }