diff options
author | blackbird <blackbird@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2007-05-23 18:24:19 +0000 |
---|---|---|
committer | blackbird <blackbird@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2007-05-23 18:24:19 +0000 |
commit | 6c29a9a33745853084a57104b1085e74494dab31 (patch) | |
tree | 258d4b471a632bdfa9a8cbb58d9140c968c4fba9 /sandbox/py-rest-doc/sphinx/environment.py | |
parent | 33dcbc2551495b37423de65c70741979dd48555f (diff) | |
download | docutils-6c29a9a33745853084a57104b1085e74494dab31.tar.gz |
improved fuzzy search
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@5101 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
Diffstat (limited to 'sandbox/py-rest-doc/sphinx/environment.py')
-rw-r--r-- | sandbox/py-rest-doc/sphinx/environment.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/sandbox/py-rest-doc/sphinx/environment.py b/sandbox/py-rest-doc/sphinx/environment.py index 2e7d51219..4f5246cff 100644 --- a/sandbox/py-rest-doc/sphinx/environment.py +++ b/sandbox/py-rest-doc/sphinx/environment.py @@ -470,13 +470,23 @@ class BuildEnvironment: for title, (fn, _) in self.descrefs.iteritems(): yield (_, fn, title, '') + def dotsearch(string): + parts = string.lower().split('.') + for idx in xrange(0, len(parts)): + yield '.'.join(parts[idx:]) + result = [] for type, filename, title, desc in possibilities(): - s.set_seq1(title.lower()) - if s.real_quick_ratio() >= cutoff and \ - s.quick_ratio() >= cutoff and \ - s.ratio() >= cutoff: - result.append((s.ratio(), type, filename, title, desc)) + best_res = 0 + for part in dotsearch(title): + s.set_seq1(part) + if s.real_quick_ratio() >= cutoff and \ + s.quick_ratio() >= cutoff and \ + s.ratio() >= cutoff and \ + s.ratio() > best_res: + best_res = s.ratio() + if best_res: + result.append((best_res, type, filename, title, desc)) return heapq.nlargest(n, result) |