Skip to content

Commit

Permalink
Switch to sift4
Browse files Browse the repository at this point in the history
Try to avoid some degenerate cases, don't use fuzzy search on
small search terms, don't search too deep on fuzzy checks.
  • Loading branch information
coke committed Dec 16, 2016
1 parent 68d2c37 commit 658a785
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 56 deletions.
47 changes: 0 additions & 47 deletions html/js/levenshtein.js

This file was deleted.

4 changes: 2 additions & 2 deletions template/footer.html
Expand Up @@ -24,7 +24,7 @@

<script type="text/javascript" src="/js/jquery-3.1.1.min.js?v=1"></script>
<script type="text/javascript" src="/js/jquery-ui.min.js?v=1"></script>
<script type="text/javascript" src="/js/levenshtein.js?v=1"></script>
<script type="text/javascript" src="/js/search.js?v=1"></script>
<script type="text/javascript" src="/js/sift4-common.js?v=1"></script>
<script type="text/javascript" src="/js/search.js?v=2"></script>
<script type="text/javascript" src="/js/jquery.cookie.js?v=1"></script>
<script type="text/javascript" src="/js/main.js?v=1"></script>
27 changes: 20 additions & 7 deletions template/search_template.js
Expand Up @@ -85,17 +85,30 @@ $(function(){
});
});

// allow for inexact searching via levenshtein

/*
* allow for inexact searching via sift4
* try to restrict usage, and always check the standard
* search mechanism if sift4 doesn't match
*/
$.extend( $.ui.autocomplete, {
escapeRegex: function( value ) {
return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
},
filter: function( array, term ) {
var OK_distance = 1;
var max_distance = 2;
var len = term.length;
var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
return $.grep( array, function( value ) {
var lookup = value.value;
if (lookup.length > term.length) {
lookup = lookup.substr(0,term.length);
if (len >=2 ) {
var OK_distance = Math.min(max_distance, len -1);
var result = sift4( value.value, term, Math.max(5, len+1), Math.max(3, len-1));
if (result <=OK_distance) {
return true;
}
}
return getEditDistance( lookup, term) <= OK_distance;

// Try the old school match
return matcher.test( value.label || value.value || value );
} );
}
} );

0 comments on commit 658a785

Please sign in to comment.