Changeset 6402

Show
Ignore:
Timestamp:
08/19/08 14:36:33 (5 months ago)
Author:
FND
Message:

SimpleSearchPlugin?: sort by relevance

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Trunk/contributors/FND/plugins/SimpleSearchPlugin.js

    r6401 r6402  
    117117Story.prototype.search = function(text, useCaseSensitive, useRegExp) { 
    118118        highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(), useCaseSensitive ? "mg" : "img"); 
    119         var matches = store.search(highlightHack, "title", "excludeSearch"); 
     119        var matches = store.search(highlightHack, null, "excludeSearch"); 
    120120        var q = useRegExp ? "/" : "'"; 
    121121        plugins.SimpleSearchPlugin.displayResults(matches, q + text + q); 
    122122}; 
    123123 
     124// override TiddlyWiki.search() to sort by relevance 
     125TiddlyWiki.prototype.search = function(searchRegExp, sortField, excludeTag, match) { 
     126        var candidates = this.reverseLookup("tags", excludeTag, !!match); 
     127        var primary = []; 
     128        var secondary = []; 
     129        for(var t = 0; t < candidates.length; t++) { 
     130                if(candidates[t].title.search(searchRegExp) != -1) { 
     131                        primary.push(candidates[t]); 
     132                } else if(candidates[t].text.search(searchRegExp) != -1) { 
     133                        secondary.push(candidates[t]); 
     134                } 
     135        } 
     136        var results = primary.concat(secondary); 
     137        if(sortField) { 
     138                results.sort(function(a, b) { 
     139                        return a[sortField] < b[sortField] ? -1 : (a[sortField] == b[sortField] ? 0 : +1); 
     140                }); 
     141        } 
     142        return results; 
     143}; 
     144 
    124145} //# end of "install only once" 
    125146//}}}