Kaynağa Gözat

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

include logging of cache hits
Brian 11 yıl önce
ebeveyn
işleme
5ba5fd5533
1 değiştirilmiş dosya ile 16 ekleme ve 4 silme
  1. 16 4
      services/spelling/app/coffee/ASpell.coffee

+ 16 - 4
services/spelling/app/coffee/ASpell.coffee

@@ -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?
-					results.push index: i, suggestions: cached
-				else if suggestions[word]?
-					cache.set(key, suggestions[word])
-					results.push index: i, suggestions: suggestions[word]
+					hits++
+					if	cached == true
+						# valid word, no need to do anything
+						continue
+					else
+						results.push index: i, suggestions: cached
+				else
+					if suggestions[word]?
+						cache.set(key, 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) ->