Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lucene/Solr用于近似(公司)名称匹配_Java_Solr_Lucene_Matching_Approximate - Fatal编程技术网

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

Java Lucene/Solr用于近似(公司)名称匹配,java,solr,lucene,matching,approximate,Java,Solr,Lucene,Matching,Approximate,我有一个关于Lucene/Solr的问题 我正在尝试解决一个通用(公司)名称匹配问题 让我举一个过于简单的例子: 我们有两个(可能很大的)名字列表,即列表A和列表B。 我们希望找到两个列表的交集,但两个列表中的名称可能并不总是完全匹配。对于列表A中的每个不同名称,我们将要报告列表B中的一个或多个最佳匹配项 我听说Lucene/Solr可以解决这个问题。你能告诉我这是不是真的吗?如果是,请给我一些简单的工作示例 感谢和问候, Dibyendu可以解决您的问题。在SOLR中为列表_B编制索引。现在在

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

我正在尝试解决一个通用(公司)名称匹配问题

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

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

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

感谢和问候,
Dibyendu可以解决您的问题。在SOLR中为列表_B编制索引。现在在SOLR中搜索列表a中的每个项目,您将从列表B中获得一个或多个可能的匹配项。
您需要根据数据集和所需的类似结果为字段配置分析器和过滤器

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

我更倾向于采取一种更简单的方法。您可以找到一个用于字符串之间模糊比较的库,然后遍历列表,只返回那些低于某个相似性阈值的字符串作为匹配项

我想到的是:

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!
        }
    }
}
for(字符串a:alist){
for(字符串b:blist){
int dist=StringUtils.getlevenshteindication(a,b)
如果(距离<阈值){
//b对a来说已经足够好了,用它做点什么吧!
}
}
}

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

我正在尝试做类似的事情,我想向其他评论者指出,如果问题是匹配准确的名称,他们提出的解决方案(如Levenshtein Distance或Soundex)可能不合适,而不是拼写错误的名字

例如:我怀疑这两种方法中的任何一种对匹配都有很大的用处

John S W Edward


我想这是可能的,但这是一个不同于他们计划完成的问题。

非常感谢,阿伦。请看我上面的评论。非常感谢,femtoRgon。请参阅我上面的评论。Arun/femtoRgon,我已经考虑过基于编辑距离的方法。我想试试Lucene/Solr,希望能提高效果。根据你的经验,请告诉我改进的机会。你找错了方向。如果您对编辑距离比较不满意,请尝试其他算法。考虑一下通过比较你想要完成什么。我不知道你需要什么,真的,但因为你在匹配名字,我怀疑像变音(基于语音相似性,而不是编辑距离)这样的东西可能更合适。
J Samuel Woodhouse Edward