Нечеткое соответствие списку имен в Java - PullRequest
0 голосов
/ 03 августа 2020

Я пытаюсь использовать библиотеку fuzzy-matcher для сопоставления списка имен из нашей базы данных. Данные сериализуются в объект java, хотелось узнать, как мы можем отобразить данные в объект Document, определенный в библиотеке fuzzy-matcher

https://github.com/intuit/fuzzy-matcher

Наш класс User. java имеет следующие атрибуты

  • userId
  • firstName
  • lastName
  • address
  • et c ....

У нас более 1000 пользователей в нашей базе данных, и мы хотели бы запустить их через нечеткое сопоставление, чтобы помочь обнаруживать дубликаты.

Любой фрагмент кода, который может помочь нам лучше понять библиотеку.

1 Ответ

0 голосов
/ 03 августа 2020

Здесь объект User сопоставляется с Document, тогда как каждый атрибут должен сопоставляться с объектом Element в нечетком сопоставлении

Если у вас есть Коллекция объекта User в java, вы можете преобразовать его в такие объекты Document / Element, как этот

List<User> users = // fetch data from db

List<Document> documents = users.stream().map(user -> {
return new Document.Builder(userId)
            .addElement(new Element.Builder<String>().setValue(user.getFirstName() + " " + user.getLastName()).setType(NAME).createElement())
            .addElement(new Element.Builder<String>().setValue(user.getAddress()).setType(ADDRESS).createElement())
            .createDocument();
}).collect(Collectors.toList());

Если у вас есть список документов, вы можете передать его одному из методов MatchService, чтобы вызвать нечеткое совпадение

MatchService matchService = new MatchService();
Map<String, List<Match<Document>>> result = matchService.applyMatchByDocId(documents);

Обратите внимание, что этот метод выше вернет вам результат, сгруппированный по userId

...