fix caching logic to include valid words, as well as mispellings

include logging of cache hits
This commit is contained in:
Brian 2015-03-09 15:57:39 +00:00
parent 10c3d3eb70
commit 5ba5fd5533

View file

@ -2,6 +2,7 @@ async = require "async"
_ = require "underscore" _ = require "underscore"
ASpellWorkerPool = require "./ASpellWorkerPool" ASpellWorkerPool = require "./ASpellWorkerPool"
LRU = require "lru-cache" LRU = require "lru-cache"
logger = require 'logger-sharelatex'
cache = LRU(10000) cache = LRU(10000)
@ -12,14 +13,25 @@ class ASpellRunner
#output = @removeAspellHeader(output) #output = @removeAspellHeader(output)
suggestions = @getSuggestions(output) suggestions = @getSuggestions(output)
results = [] results = []
hits = 0
for word, i in words for word, i in words
key = language + ':' + word key = language + ':' + word
cached = cache.get(key) cached = cache.get(key)
if cached? if cached?
hits++
if cached == true
# valid word, no need to do anything
continue
else
results.push index: i, suggestions: cached results.push index: i, suggestions: cached
else if suggestions[word]? else
if suggestions[word]?
cache.set(key, suggestions[word]) cache.set(key, suggestions[word])
results.push index: i, suggestions: suggestions[word] results.push index: i, suggestions: suggestions[word]
else
# a valid word, but uncached
cache.set(key, true)
logger.log hits: hits, total: words.length, hitrate: hits/words.length, "cache hit rate"
callback null, results callback null, results
getSuggestions: (output) -> getSuggestions: (output) ->