|
@@ -116,27 +116,38 @@ func (c *ByClassifier) Janitor(size int) {
|
|
|
|
|
|
sortMap(&c.MEH, size)
|
|
|
|
|
|
- c.bayez = nil // mark it for garbage collection.
|
|
|
+ log.Println("Janitor Finished.")
|
|
|
|
|
|
- c.bayez = multibayes.NewClassifier()
|
|
|
- c.bayez.MinClassSize = 0
|
|
|
+}
|
|
|
|
|
|
- c.BAD.Range(func(key interface{}, value interface{}) bool {
|
|
|
- c.bayez.Add(key.(string), []string{"BAD"})
|
|
|
- return true
|
|
|
- })
|
|
|
+//RefreshBayes refresh the bayesian using values we stored
|
|
|
+func (c *ByClassifier) RefreshBayes() {
|
|
|
|
|
|
- c.GOOD.Range(func(key interface{}, value interface{}) bool {
|
|
|
- c.bayez.Add(key.(string), []string{"GOOD"})
|
|
|
- return true
|
|
|
- })
|
|
|
+ log.Println("RefreshBayes Thread started")
|
|
|
|
|
|
- c.MEH.Range(func(key interface{}, value interface{}) bool {
|
|
|
- c.bayez.Add(key.(string), []string{"GOOD", "BAD"})
|
|
|
- return true
|
|
|
- })
|
|
|
+ ticker := time.NewTicker(1 * time.Minute)
|
|
|
|
|
|
- log.Println("Janitor Finished.")
|
|
|
+ for _ = range ticker.C {
|
|
|
+
|
|
|
+ c.bayez = multibayes.NewClassifier()
|
|
|
+ c.bayez.MinClassSize = 0
|
|
|
+
|
|
|
+ c.BAD.Range(func(key interface{}, value interface{}) bool {
|
|
|
+ c.bayez.Add(key.(string), []string{"BAD"})
|
|
|
+ return true
|
|
|
+ })
|
|
|
+
|
|
|
+ c.GOOD.Range(func(key interface{}, value interface{}) bool {
|
|
|
+ c.bayez.Add(key.(string), []string{"GOOD"})
|
|
|
+ return true
|
|
|
+ })
|
|
|
+
|
|
|
+ c.MEH.Range(func(key interface{}, value interface{}) bool {
|
|
|
+ c.bayez.Add(key.(string), []string{"GOOD", "BAD"})
|
|
|
+ return true
|
|
|
+ })
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
@@ -177,7 +188,7 @@ func (c *ByClassifier) enroll() {
|
|
|
|
|
|
log.Println("Classifier populated...")
|
|
|
go c.CleanThread()
|
|
|
-
|
|
|
+ go c.RefreshBayes()
|
|
|
log.Println("Janitor Started")
|
|
|
|
|
|
}
|