模糊匹配 Java 中的名称列表

Fuzzy Matching a list of names in Java

我正在尝试使用模糊匹配器库来匹配我们数据库中的姓名列表。 数据被序列化为一个 java 对象,想知道我们如何将数据映射到模糊匹配库

中定义的 Document 对象

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

我们的User.javaclass有这些属性

我们的数据库中有 1000 多个用户,并希望 运行 通过模糊匹配器帮助检测重复项。

任何可以帮助我们更好地理解库的代码片段都会有所帮助

此处 User 对象映射到 Document 而每个属性都需要映射到 fuzzy-matcher

中的 Element 对象

如果您在 java 中有一个 User 对象的集合,您可以像这样将其转换为 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);

请注意,上述方法将 return 您得到一个按 userId

分组的结果