* fine-tune fuzzy matching

This commit is contained in:
Reinhard Pointner 2011-12-07 05:43:56 +00:00
parent 703e7024c2
commit e1f76a671b
1 changed files with 13 additions and 13 deletions

View File

@ -27,7 +27,7 @@ public enum EpisodeMetrics implements SimilarityMetric {
private final Map<Object, Collection<SxE>> transformCache = synchronizedMap(new WeakHashMap<Object, Collection<SxE>>(64, 4)); private final Map<Object, Collection<SxE>> transformCache = synchronizedMap(new WeakHashMap<Object, Collection<SxE>>(64, 4));
@Override @Override
protected Collection<SxE> parse(Object object) { protected Collection<SxE> parse(Object object) {
if (object instanceof Movie) { if (object instanceof Movie) {
@ -61,7 +61,7 @@ public enum EpisodeMetrics implements SimilarityMetric {
private final Map<Object, Date> transformCache = synchronizedMap(new WeakHashMap<Object, Date>(64, 4)); private final Map<Object, Date> transformCache = synchronizedMap(new WeakHashMap<Object, Date>(64, 4));
@Override @Override
protected Date parse(Object object) { protected Date parse(Object object) {
if (object instanceof Movie) { if (object instanceof Movie) {
@ -141,7 +141,7 @@ public enum EpisodeMetrics implements SimilarityMetric {
return (float) (ceil(sum * 3) / 3); return (float) (ceil(sum * 3) / 3);
} }
protected String[] normalize(Object[] objects) { protected String[] normalize(Object[] objects) {
String[] names = new String[objects.length]; String[] names = new String[objects.length];
@ -152,7 +152,7 @@ public enum EpisodeMetrics implements SimilarityMetric {
return names; return names;
} }
protected Object[] fields(Object object) { protected Object[] fields(Object object) {
if (object instanceof Episode) { if (object instanceof Episode) {
Episode episode = (Episode) object; Episode episode = (Episode) object;
@ -178,12 +178,12 @@ public enum EpisodeMetrics implements SimilarityMetric {
@Override @Override
public float getSimilarity(Object o1, Object o2) { public float getSimilarity(Object o1, Object o2) {
// normalize absolute similarity to similarity rank (4 ranks in total), // normalize absolute similarity to similarity rank (6 ranks in total),
// so we are less likely to fall for false positives in this pass, and move on to the next one // so we are less likely to fall for false positives in this pass, and move on to the next one
return (float) (floor(super.getSimilarity(o1, o2) * 4) / 4); return (float) (floor(super.getSimilarity(o1, o2) * 6) / 6);
} }
@Override @Override
protected String normalize(Object object) { protected String normalize(Object object) {
// simplify file name, if possible // simplify file name, if possible
@ -210,7 +210,7 @@ public enum EpisodeMetrics implements SimilarityMetric {
return o1 instanceof File ? super.getSimilarity(o2, o1) : super.getSimilarity(o1, o2); return o1 instanceof File ? super.getSimilarity(o2, o1) : super.getSimilarity(o1, o2);
} }
@Override @Override
protected long getLength(Object object) { protected long getLength(Object object) {
if (object instanceof FileInfo) { if (object instanceof FileInfo) {
@ -237,18 +237,18 @@ public enum EpisodeMetrics implements SimilarityMetric {
// inner metric // inner metric
private final SimilarityMetric metric; private final SimilarityMetric metric;
private EpisodeMetrics(SimilarityMetric metric) { private EpisodeMetrics(SimilarityMetric metric) {
this.metric = metric; this.metric = metric;
} }
@Override @Override
public float getSimilarity(Object o1, Object o2) { public float getSimilarity(Object o1, Object o2) {
return metric.getSimilarity(o1, o2); return metric.getSimilarity(o1, o2);
} }
protected static String normalizeObject(Object object) { protected static String normalizeObject(Object object) {
String name = object.toString(); String name = object.toString();
@ -269,7 +269,7 @@ public enum EpisodeMetrics implements SimilarityMetric {
return name.trim().toLowerCase(); return name.trim().toLowerCase();
} }
public static SimilarityMetric[] defaultSequence(boolean includeFileMetrics) { public static SimilarityMetric[] defaultSequence(boolean includeFileMetrics) {
// 1. pass: match by file length (fast, but only works when matching torrents or files) // 1. pass: match by file length (fast, but only works when matching torrents or files)
// 2. pass: match by season / episode numbers // 2. pass: match by season / episode numbers
@ -283,7 +283,7 @@ public enum EpisodeMetrics implements SimilarityMetric {
} }
} }
public static SimilarityMetric verificationMetric() { public static SimilarityMetric verificationMetric() {
return new MetricCascade(FileSize, FileName, SeasonEpisode, AirDate, Title, Name); return new MetricCascade(FileSize, FileName, SeasonEpisode, AirDate, Title, Name);
} }