尝试使用fuzzyquery分析中文字符的相似度

需要对一些数据进行去掉重复处理,规则类似于,两条记录的名称和地址相似度很大,则认为是同样的,应该去掉当中的某一个。昨天晚上翻了lucene得书籍,想找找看有什么好的方法没有,最后决定尝试一下fuzzyquery,大早上的就写了一个,结果很让我莫名其妙!
代码如下:


public class FuzzyQueryTest {

public static void main(String[] args) {
RAMDirectory directory = new RAMDirectory();
try {
IndexWriter indexWriter = new IndexWriter(directory,
new MMAnalyzer(), true);
Document document1 = new Document();
Document document2 = new Document();
Document document3 = new Document();
Document document4 = new Document();
Field f1 = new Field("content", "北京科技大学", Field.Store.YES,
Field.Index.TOKENIZED);
Field f2 = new Field("content", "北京语言大学", Field.Store.YES,
Field.Index.TOKENIZED);
Field f3 = new Field("content", "中国科技大学", Field.Store.YES,
Field.Index.TOKENIZED);
Field f4 = new Field("content", "北京大学科技馆", Field.Store.YES,
Field.Index.TOKENIZED);
document1.add(f1);
document2.add(f2);
document3.add(f3);
document4.add(f4);
indexWriter.addDocument(document4);
indexWriter.addDocument(document3);
indexWriter.addDocument(document2);
indexWriter.addDocument(document1);
indexWriter.close();
// search
IndexSearcher indexSearcher = new IndexSearcher(directory);
Term term = new Term("content", "北京语言大学");
FuzzyQuery fuzzyQuery = new FuzzyQuery(term);
Hits hits = indexSearcher.search(fuzzyQuery);
for (int i = 0; i < hits.length(); i++) {
System.out.println(hits.doc(i));
System.out.println(hits.score(i));
Explanation explanation = indexSearcher.explain(fuzzyQuery, i);
System.out.println(explanation.toString());
System.out.println("-----------------");
}
} catch (CorruptIndexException e) {
e.printStackTrace();
} catch (LockObtainFailedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}




结果是空,如果只是搜索大学或者北京,是有结果的。但是,怎么看这个结果都不能够满足我那个排重的需求阿!
各位,有什么好的建议!指导一下!

自己修正一下我自己提出的问题,我提出的问题实际上是比较两个字符的相似度。对于这个问题,doris给出的解释思路是使用lcss找到最大的匹配字符串。我正在考虑,找到最大字符串后,怎么通过某种机制来衡量和原来字符相似的评分!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值