Дедупликация Duke: не могу найти точные записи
Я пытаюсь создать конфигурацию и процессор для Duke, чтобы найти точные совпадения в списке записей. Я создал процессор на основе ExactMatchComparator, но функция не возвращает точные совпадения. Вот настройки процессора, конфигурации и слушателей:
public void setup() {
//setup
List<Property> exactMatchProperties = new ArrayList<Property>();
exactListener = new TestUtils.TestListener();
ExactComparator exactComparator = new ExactComparator();
//create properties (columns), with name, comparator, and high-low thresholds. ID property has no comparator or propabilities.
exactMatchProperties.add(new PropertyImpl("ID"));
exactMatchProperties.add(new PropertyImpl("NAME", exactComparator, 0.0, 1.0));
exactMatchProperties.add(new PropertyImpl("EMAIL", exactComparator, 0.0, 1.0));
//create new configuration implementation
exactMatchConfig = new ConfigurationImpl();
//add properties to config
exactMatchConfig.setProperties(exactMatchProperties);
exactMatchConfig.setThreshold(1.0);
exactMatchConfig.setMaybeThreshold(0.0);
//initialize the processor and add match listener
exactMatchProcessor = new Processor(exactMatchConfig, true);
exactMatchProcessor.addMatchListener(exactListener);
}
И вот моя функция для проверки:
public void testExactMatch() {
Collection<Record> records = new ArrayList<Record>();
Record rec1 = TestUtils.makeRecord(new String[] { "ID", "1", "NAME", "Jon", "EMAIL", "jon@doe.com" });
Record rec2 = TestUtils.makeRecord(new String[] { "ID", "1", "NAME", "Jon", "EMAIL", "jon@doe.com" });
records.add(rec1);
records.add(rec2);
exactMatchProcessor.deduplicate(records);
System.out.println(exactListener.getMatches().size());
}
Я использую API, и я прочитал вопрос о SO, упомянутый здесь, но эти вопросы относятся к XML, в то время как я делаю тесты в Java.
Разве getMatches не должны быть пустыми? Как я могу получить список найденных дубликатов или наоборот (список уникальных записей, без дубликатов)? Спасибо