java - Lucene/Solr 用于近似(公司)名称匹配

标签 java solr lucene matching approximate

我有一个关于 Lucene/Solr 的问题。

我正在尝试解决一般(公司)名称匹配问题。

让我举一个过于简单的例子:

我们有两个(可能很大)名称列表,即 list_A 和 list_B。 我们想找到两个列表的交集,但是两个列表中的名称可能并不总是完全匹配。对于 list_A 中的每个不同名称,我们将要报告来自 list_B 的一个或多个最佳匹配。

听说Lucene/Solr可以解决这个问题。你能告诉我这是不是真的?如果是,请指出一些最小的工作示例。

感谢和问候, 迪比恩杜

最佳答案

你可以用 Lucene 解决这个问题,是的,但是如果你只需要解决这个问题,创建 Lucene 索引会有点迂回。

我更倾向于采用更简单的方法。您可以找到一个用于字符串之间模糊比较的库,并遍历您的列表并仅返回那些在特定相似度阈值下的匹配项。

org.apache.commons.lang3.StringUtils想到,像这样的东西:

for (String a : alist) {
    for (String b : blist) {
        int dist = StringUtils.getLevenshteinDistance(a,b)
        if (dist < threshold) {
            //b is a good enough match for a, do something with it!
        }
    }
}

根据您的意图,其他算法可能更合适(例如 SoundexMetaphone)

关于java - Lucene/Solr 用于近似(公司)名称匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263599/

相关文章:

java - 在 Solr 中搜索 "Hash sign"

search - 如何在 Solr Dismax 查询中正确提升结果

SOLR - 如何对 bool 值进行模糊搜索

java - 将 JSON 转换为 Java 类(从 Android 应用程序调用 WebApi)

full-text-search - 在 Solr 中,如何针对一个字段查询多值字段中不同的一组值

c# - 如何在 lucene 搜索中添加特殊字符? C#

lucene - 将内部搜索放入Google Analytics(分析)

java - 插入时oracle + java编码问题

Java Android FCM向用户服务器发送消息返回HTTP响应码

java - 在 java 主方法之外初始化一个对象