Mercurial > dedupe
annotate CachedEditDistance.cpp @ 78:9744ec195be3
Encapsulate EditDistance with caching.
| author | Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no> |
|---|---|
| date | Thu, 10 Oct 2013 01:07:52 +0200 |
| parents | |
| children |
| rev | line source |
|---|---|
|
78
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
1 #include "CachedEditDistance.hpp" |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
2 |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
3 #include "CompileTimeConstants.h" |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
4 #include "ConfigurationProcessing.hpp" |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
5 |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
6 CachedEditDistance::cacheType* CachedEditDistance::cache = 0; |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
7 //CachedEditDistance::cacheType CachedEditDistance::cache; |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
8 |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
9 int CachedEditDistance::Compute(QString a, QString b, bool remove) { |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
10 if (remove) { |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
11 removeDiacriticsNoCopy(a); |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
12 removeDiacriticsNoCopy(b); |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
13 } |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
14 |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
15 if ( a == b) |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
16 return 0; |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
17 |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
18 OrderedPair<UniqueString> lup(a, b); |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
19 |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
20 if (cache == 0) { |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
21 QString cacheLocation = processSetupVariables(EDITDISTANCE_CACHE_LOCATION); |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
22 CachedEditDistance::cache = new cacheType(cacheLocation, "EditLUT"); |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
23 } |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
24 boost::optional<int> res = cache->value(lup); |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
25 if (res) |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
26 return *res; |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
27 |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
28 int retVal = EditDistance::Compute(a, b, false); |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
29 |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
30 cache->insert(lup, retVal); |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
31 |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
32 return retVal; |
|
9744ec195be3
Encapsulate EditDistance with caching.
Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
parents:
diff
changeset
|
33 } |
