The following sample searches for history records by short description (records that contain "updated contact record" in the Description) and date (records created after 12/01/2008).
protected HistoryRepository historyRepository;
StringFieldCriterion fieldCriterion1 = new StringFieldCriterion();
fieldCriterion1.setComparator(StringComparator.CONTAINS);
LegacySearchFieldPathExpression fieldPathExpression1 = new
LegacySearchFieldPathExpression();
fieldPathExpression1.setSearchKeyPath("shortDescription");
fieldCriterion1.setFieldPath(fieldPathExpression);
fieldCriterion1.getValue().add("updated contact record");
DateFieldCriterion fieldCriterion2 = new DateFieldCriterion();
fieldCriterion2.setComparator(StringComparator.AFTER);
LegacySearchFieldPathExpression fieldPathExpression2 = new LegacySearchFieldPathExpression();
fieldPathExpression2.setSearchKeyPath("createdOn");
fieldCriterion2.setFieldPath(fieldPathExpression);
fieldCriterion2.getValue().add(01-DEC-08);
FieldSearchClause searchCriteria = new FieldSearchClause();
searchCriteria.setOperator(LogicOperator.AND);
searchCriteria.getCriteria().add(fieldCriterion1);
searchCriteria.getCriteria().add(fieldCriterion2);
List<History> searchHistory = historyRepository.readHistoriesByCriteria(searchCriteria, 100, getPropertiesToRead());
private List<String> getPropertiesToRead() {
List<String> properties = new List<String>();
properties.add("version");
properties.add("createdBy");
properties.add("createdOn");
properties.add("modifiedBy");
properties.add("modifiedOn");
properties.add("archivedOn");
properties.add("text");
properties.add("shortDescription");
properties.add("parentObject");
properties.add("categories");
return properties;
}