Performance-tuning query processor and memcached, a=chris

Chris Pollett [2011-07-19 21:Jul:th]
Performance-tuning query processor and memcached, a=chris
Filename
bin/queue_server.php
configs/config.php
configs/default_crawl.ini
controllers/traffic_controller.php
css/search.css
index.php
lib/index_archive_bundle.php
lib/index_bundle_iterators/group_iterator.php
lib/index_bundle_iterators/index_bundle_iterator.php
lib/index_bundle_iterators/intersect_iterator.php
lib/index_dictionary.php
lib/index_shard.php
lib/web_archive_bundle.php
locale/ar/configure.ini
locale/de/configure.ini
locale/en-US/configure.ini
locale/en-US/statistics.txt
locale/es/configure.ini
locale/fr-FR/configure.ini
locale/he/configure.ini
locale/in-ID/configure.ini
locale/it/configure.ini
locale/ja/configure.ini
locale/ko/configure.ini
locale/pl/configure.ini
locale/pt/configure.ini
locale/ru/configure.ini
locale/th/configure.ini
locale/vi-VN/configure.ini
locale/zh-CN/configure.ini
views/settings_view.php
views/signin_view.php
diff --git a/bin/queue_server.php b/bin/queue_server.php
index 4c3ac03f3..d23006c06 100755
--- a/bin/queue_server.php
+++ b/bin/queue_server.php
@@ -88,6 +88,18 @@ foreach(glob(BASE_DIR."/lib/indexing_plugins/*_plugin.php") as $filename) {
 mb_internal_encoding("UTF-8");
 mb_regex_encoding("UTF-8");

+/*
+ * If Memcache is available queueserver can be used to load
+ * index dictionaries and shards into memcache. Note in only
+ * this situation is NO_CACHE ignored
+ */
+if(USE_MEMCACHE) {
+    $MEMCACHE = new Memcache();
+    foreach($MEMCACHES as $mc) {
+        $MEMCACHE->addServer($mc['host'], $mc['port']);
+    }
+    unset($mc);
+}

 /**
  * Command line program responsible for managing Yioop crawls.
@@ -482,7 +494,6 @@ class QueueServer implements CrawlConstants
                         self::index_data_base_name.$this->crawl_time);

                     $info[self::STATUS] = self::WAITING_START_MESSAGE_STATE;
-                    //Added by Priya Gangaraju.
                     //Calling post processing function if the processor is
                     //selected in the crawl options page.
                     if(isset($this->indexing_plugins)) {
@@ -1606,6 +1617,8 @@ class QueueServer implements CrawlConstants

         return $list;
     }
+
+
 }

 /*
diff --git a/configs/config.php b/configs/config.php
index 3d3e1e2f2..1e1a151ed 100755
--- a/configs/config.php
+++ b/configs/config.php
@@ -134,8 +134,7 @@ define ('SESSION_NAME', "yioopbiscuit");
 if(USE_MEMCACHE) {
     $memcache_hosts = explode("|Z|", MEMCACHE_SERVERS);
     foreach($memcache_hosts as $host)
-    $MEMCACHES[] = array("host" => $host, "port" => "11211",
-        "persistent" => true, "weight" => 1, "timeout" => 1, "retry" => 5
+    $MEMCACHES[] = array("host" => $host, "port" => "11211"
     );
     unset($memcache_hosts);
     unset($host);
diff --git a/configs/default_crawl.ini b/configs/default_crawl.ini
index b428899bf..1e521cdc0 100644
--- a/configs/default_crawl.ini
+++ b/configs/default_crawl.ini
@@ -28,10 +28,6 @@ crawl_type = 'ax';
 restrict_sites_by_url = false;

 [allowed_sites]
-url[] = 'http://www.physics.sjsu.edu/';
-url[] = 'http://www.cs.sjsu.edu/';
-url[] = 'http://www.math.sjsu.edu/';
-url[] = 'domain:sjsu.edu';
 url[] = 'http://www.yahoo.com/';
 url[] = 'http://www.youtube.com/';
 url[] = 'http://www.google.com/';
@@ -39,10 +35,10 @@ url[] = 'http://www.google.com/';
 [disallowed_sites]
 url[] = 'domain:arxiv.org';
 url[] = 'domain:ask.com';
+url[] = 'domain:yelp.com';

 [seed_sites]
 url[] = 'http://www.ucanbuyart.com/';
-url[] = 'http://www.cs.sjsu.edu/faculty/pollett/';
 url[] = 'http://www.wikipedia.org/';
 url[] = 'http://www.dmoz.org/';
 url[] = 'http://www.yahoo.com/';
diff --git a/controllers/traffic_controller.php b/controllers/traffic_controller.php
index 78e30c69e..d7ca6580e 100644
--- a/controllers/traffic_controller.php
+++ b/controllers/traffic_controller.php
@@ -103,11 +103,8 @@ class TrafficController extends Controller implements CrawlConstants

         $dir = CRAWL_DIR."/schedules/"."ToolbarData";

-        //echo "$dir";
-
         $address = str_replace(".", "-", $_SERVER['REMOTE_ADDR']);
         $address = str_replace(":", "_", $address);
-        //$time = time();
         $day = floor($time/86400);

         if(!file_exists($dir)) {
@@ -127,7 +124,7 @@ class TrafficController extends Controller implements CrawlConstants
         $fh = fopen($fname, "a+");
         fwrite($fh, $toolbar_data);
         fclose($fh);
-        //echo "OK TEST";
+
         return true;

     }
diff --git a/css/search.css b/css/search.css
index 532a19f60..d323700f9 100755
--- a/css/search.css
+++ b/css/search.css
@@ -148,7 +148,7 @@ body.html-tb-lr

 .landing-spacer
 {
-    height:5in;
+    height:6in;
 }
 .html-ltr .landing
 {
diff --git a/index.php b/index.php
index 4dbd6edc6..ec9e2921c 100755
--- a/index.php
+++ b/index.php
@@ -56,8 +56,7 @@ require_once(BASE_DIR."/models/datasources/".DBMS."_manager.php");
 if(USE_MEMCACHE) {
     $MEMCACHE = new Memcache();
     foreach($MEMCACHES as $mc) {
-        $MEMCACHE->addServer($mc['host'], $mc['port'], $mc['persistent'],
-            $mc['weight'], $mc['timeout'], $mc['retry']);
+        $MEMCACHE->addServer($mc['host'], $mc['port']);
     }
     unset($mc);
 }
diff --git a/lib/index_archive_bundle.php b/lib/index_archive_bundle.php
index 35f14a7c8..3ca1d5574 100644
--- a/lib/index_archive_bundle.php
+++ b/lib/index_archive_bundle.php
@@ -145,7 +145,7 @@ class IndexArchiveBundle implements CrawlConstants
      * @param string $description a text name/serialized info about this
      *      IndexArchiveBundle
      */
-    public function __construct($dir_name, $read_only_archive = true,
+    function __construct($dir_name, $read_only_archive = true,
         $description = NULL, $num_docs_per_generation = NUM_DOCS_PER_GENERATION)
     {

@@ -191,7 +191,7 @@ class IndexArchiveBundle implements CrawlConstants
      *      (visited urls is a smaller number than the total count of objects
      *      stored in the index).
      */
-    public function addPages($generation, $offset_field, &$pages,
+    function addPages($generation, $offset_field, &$pages,
         $visited_urls_count)
     {
         $this->summaries->setWritePartition($generation);
@@ -206,7 +206,7 @@ class IndexArchiveBundle implements CrawlConstants
      * @param object $index_shard a mini inverted index of word_key=>doc data
      *      to add to this IndexArchiveBundle
      */
-    public function addIndexData($index_shard)
+    function addIndexData($index_shard)
     {

         crawlLog("**ADD INDEX DIAGNOSTIC INFO...");
@@ -220,7 +220,7 @@ class IndexArchiveBundle implements CrawlConstants
     /**
      * Determines based on its size, if index_shard should be added to
      * the active generation or in a new generation should be started.
-     * If so, a new generation is started, the old generation is saves, and
+     * If so, a new generation is started, the old generation is saved, and
      * the dictionary of the old shard is copied to the bundles dictionary
      * and a log-merge performed if needed
      *
@@ -228,7 +228,7 @@ class IndexArchiveBundle implements CrawlConstants
      * @return int the active generation after the check and possible change has
      *      been performed
      */
-    public function initGenerationToAdd($index_shard)
+    function initGenerationToAdd($index_shard)
     {
         $current_num_docs = $this->getActiveShard()->num_docs;
         $add_num_docs = $index_shard->num_docs;
@@ -277,7 +277,7 @@ class IndexArchiveBundle implements CrawlConstants
      * returns a reference to this shard
      * @return object last shard in the bundle
      */
-     public function getActiveShard()
+     function getActiveShard()
      {
         if($this->setCurrentShard($this->generation_info['ACTIVE'])) {
             return $this->getCurrentShard();
@@ -299,7 +299,7 @@ class IndexArchiveBundle implements CrawlConstants
      *
      * @return object the currently being index shard
      */
-     public function getCurrentShard()
+     function getCurrentShard()
      {
         if(!isset($this->current_shard)) {
             if(!isset($this->generation_info['CURRENT'])) {
@@ -314,7 +314,7 @@ class IndexArchiveBundle implements CrawlConstants
                     $this->generation_info['DISK_BASED'] == true) {
                     $this->current_shard =new IndexShard(
                         $current_index_shard_file,
-                        $this->generation_info['CURRENT']*
+                        $this->generation_info['CURRENT'],
                         $this->num_docs_per_generation, true);
                     $this->current_shard->getShardHeader();
                     $this->current_shard->read_only_from_disk = true;
@@ -338,7 +338,7 @@ class IndexArchiveBundle implements CrawlConstants
      * @param $disk_based whether to read the whole shard in before using or
      *      leave it on disk except for pages need and use memcache
      */
-     public function setCurrentShard($i, $disk_based = false)
+     function setCurrentShard($i, $disk_based = false)
      {
         $this->generation_info['DISK_BASED'] = $disk_based;
         if(isset($this->generation_info['CURRENT']) &&
@@ -361,7 +361,7 @@ class IndexArchiveBundle implements CrawlConstants
      *      defaults to the same number as the current shard
      * @return array desired page
      */
-    public function getPage($offset, $generation = -1)
+    function getPage($offset, $generation = -1)
     {
         if($generation == -1 ) {
             $generation = $this->generation_info['CURRENT'];
@@ -372,7 +372,7 @@ class IndexArchiveBundle implements CrawlConstants
     /**
      * Forces the current shard to be saved
      */
-    public function forceSave()
+    function forceSave()
     {
         $this->getActiveShard()->save();
     }
@@ -386,7 +386,7 @@ class IndexArchiveBundle implements CrawlConstants
      * @param string $comparison callback function name for how to compare words
      * @return array the $num most documents or $num least document words
      */
-    public function getSelectiveWords($word_keys, $num, $comparison="lessThan")
+    function getSelectiveWords($word_keys, $num, $comparison="lessThan")
         //lessThan is in utility.php
     {
         $words_array = array();
@@ -410,6 +410,45 @@ class IndexArchiveBundle implements CrawlConstants
     }


+    /**
+     *
+     */
+    function setMemcache($dict = true, $shards = false)
+    {
+        if($dict) {
+            $this->dictionary->setMemcache();
+        }
+        if($shards) {
+            $this->setCurrentShard(0, true);
+            $this->getCurrentShard();
+            $old_current_index =  $this->generation_info['CURRENT'];
+            $active_index = $this->generation_info['ACTIVE'];
+            for($i = 0; $i <= $active_index; $i++) {
+                $mem_shard = $this->setCurrentShard($i, true);
+                $this->getCurrentShard()->setMemcachePostingsDocs();
+            }
+            $this->setCurrentShard($old_current_index, true);
+        }
+    }
+
+    /**
+     *
+     */
+    function removeMemcache()
+    {
+        $this->dictionary->removeMemcache();
+        $this->setCurrentShard(0, true);
+        $this->getCurrentShard();
+        $old_current_index =  $this->generation_info['CURRENT'];
+        $active_index = $this->generation_info['ACTIVE'];
+        for($i = 0; $i <= $active_index; $i++) {
+            $mem_shard = $this->setCurrentShard($i, true);
+            $this->getCurrentShard()->removeMemcachePostingsDocs();
+        }
+        $this->setCurrentShard($old_current_index, true);
+
+    }
+
     /**
      * Gets the description, count of summaries, and number of partitions of the
      * summaries store in the supplied directory. If the file arctype.txt
@@ -420,7 +459,7 @@ class IndexArchiveBundle implements CrawlConstants
      * @param string path to a directory containing a summaries WebArchiveBundle
      * @return array summary of the given archive
      */
-    public static function getArchiveInfo($dir_name)
+    static function getArchiveInfo($dir_name)
     {
         if(file_exists($dir_name."/arc_description.txt")) {
             $crawl = array();
@@ -439,6 +478,6 @@ class IndexArchiveBundle implements CrawlConstants
         return WebArchiveBundle::getArchiveInfo($dir_name."/summaries");
     }

-
+
 }
 ?>
diff --git a/lib/index_bundle_iterators/group_iterator.php b/lib/index_bundle_iterators/group_iterator.php
index 7f462d601..66e180174 100644
--- a/lib/index_bundle_iterators/group_iterator.php
+++ b/lib/index_bundle_iterators/group_iterator.php
@@ -165,9 +165,7 @@ class GroupIterator extends IndexBundleIterator
     function findDocsWithWord()
     {
         // first get a block of documents on which grouping can be done
-
         $pages =  $this->getPagesToGroup();
-
         $this->count_block_unfiltered = count($pages);
         if(!is_array($pages)) {
             return $pages;
@@ -189,11 +187,9 @@ class GroupIterator extends IndexBundleIterator
             /*
                 Calculate aggregate values for each field of the groups we found
              */
-
             $pages = $this->computeBoostAndOutPages($pre_out_pages);
         }
         $this->pages = $pages;
-
         return $pages;

     }
@@ -361,7 +357,6 @@ class GroupIterator extends IndexBundleIterator
         $hash_inlinks = array();
         $indexes = array();
         $one_word_flag = isset($this->index_bundle_iterator->word_key);
-
         foreach($pre_out_pages as $hash_url => $group_infos) {
             $key = $group_infos[0]["KEY"];
             $tmp_index =  $this->getIndex($key);
@@ -374,12 +369,10 @@ class GroupIterator extends IndexBundleIterator

         }
         $num_docs_array = array();
-
         foreach($hash_inlinks as $name => $inlinks) {
             $num_docs_array = array_merge($num_docs_array,
                 $indexes[$name]->dictionary->getNumDocsArray($inlinks));
         }
-
         foreach($pre_out_pages as $hash_url => $group_infos) {
             $out_pages[$hash_url] = $pre_out_pages[$hash_url][0];
             $out_pages[$hash_url][self::SUMMARY_OFFSET] = array();
@@ -474,7 +467,6 @@ class GroupIterator extends IndexBundleIterator
             }

         }
-
         return $out_pages;
     }

diff --git a/lib/index_bundle_iterators/index_bundle_iterator.php b/lib/index_bundle_iterators/index_bundle_iterator.php
index 7729b7ad9..c87091604 100644
--- a/lib/index_bundle_iterators/index_bundle_iterator.php
+++ b/lib/index_bundle_iterators/index_bundle_iterator.php
@@ -139,16 +139,20 @@ abstract class IndexBundleIterator implements CrawlConstants
     /**
      *
      */
-     function genDocOffsetCmp($gen_doc1, $gen_doc2) {
-        $equal_generation = ($gen_doc1[0] == $gen_doc2[0]);
-        $equal_offset = ($gen_doc1[1] == $gen_doc2[1]);
-        $less_generation = ($gen_doc1[0] < $gen_doc2[0]);
-        $less_offset = ($gen_doc1[1] < $gen_doc2[1]);
-        if($equal_generation && $equal_offset) {
-            return 0;
-        } else if ($less_generation || ($equal_generation && $less_offset) ) {
+     function genDocOffsetCmp($gen_doc1, $gen_doc2)
+     {
+        //less generation
+        if($gen_doc1[0] < $gen_doc2[0]) {
             return -1;
         }
+        //equal generation
+        if($gen_doc1[0] == $gen_doc2[0]) {
+            if($gen_doc1[1] == $gen_doc2[1]) {
+                return 0; //equal offset
+            } else if ($gen_doc1[1] < $gen_doc2[1]) {
+                return -1; // less offset
+            }
+        }
         return 1;
      }

diff --git a/lib/index_bundle_iterators/intersect_iterator.php b/lib/index_bundle_iterators/intersect_iterator.php
index 27887991c..8c9ab5178 100644
--- a/lib/index_bundle_iterators/intersect_iterator.php
+++ b/lib/index_bundle_iterators/intersect_iterator.php
@@ -246,50 +246,55 @@ class IntersectIterator extends IndexBundleIterator
     {
         $biggest_gen_offset = $this->index_bundle_iterators[
                         0]->currentGenDocOffsetWithWord();
-        $old_biggest_gen_offset = $biggest_gen_offset;

+        $all_same = true;
         for($i = 0; $i < $this->num_iterators; $i++) {
-            $old_gen_doc_offset[$i] = NULL;
+            $cur_gen_doc_offset =
+                $this->index_bundle_iterators[
+                    $i]->currentGenDocOffsetWithWord();
+            $gen_doc_offset[$i] = $cur_gen_doc_offset;
+            if($cur_gen_doc_offset == -1) {
+                return -1;
+            }
+            $gen_doc_cmp = $this->genDocOffsetCmp($cur_gen_doc_offset,
+                $biggest_gen_offset);
+            if($gen_doc_cmp > 0) {
+                $biggest_gen_offset = $cur_gen_doc_offset;
+                $all_same = false;
+            } else if ($gen_doc_cmp < 0) {
+                $all_same = false;
+            }
         }
-
-        do{
-            $all_same = true;
-            for($i = 0; $i < $this->num_iterators; $i++) {
-                $new_gen_doc_offset[$i] =
-                    $this->index_bundle_iterators[
-                        $i]->currentGenDocOffsetWithWord();
-                if($new_gen_doc_offset[$i] == $old_gen_doc_offset[$i] &&
-                    $new_gen_doc_offset[$i] != $old_biggest_gen_offset) {
+        if($all_same) {
+            return 1;
+        }
+        $last_changed = -1;
+        $i = 0;
+        while($i != $last_changed) {
+            if($last_changed == -1) $last_changed = 0;
+            if($this->genDocOffsetCmp($gen_doc_offset[$i],
+                $biggest_gen_offset) < 0) {
+                $iterator = $this->index_bundle_iterators[$i];
+                $iterator->advance($biggest_gen_offset);
+                $cur_gen_doc_offset =
+                    $iterator->currentGenDocOffsetWithWord();
+                $gen_doc_offset[$i] = $cur_gen_doc_offset;
+                if($cur_gen_doc_offset == -1) {
                     return -1;
                 }

-                if($new_gen_doc_offset[$i] == -1) {
-                    return -1;
+                if($this->genDocOffsetCmp($cur_gen_doc_offset,
+                    $biggest_gen_offset) > 0) {
+                    $last_changed = $i;
+                    $biggest_gen_offset = $cur_gen_doc_offset;
                 }
-                // 0 - generation, 1 - doc_offset
-                $gen_doc_cmp = $this->genDocOffsetCmp($new_gen_doc_offset[$i],
-                    $biggest_gen_offset);
-                if($gen_doc_cmp > 0) {
-                    $biggest_gen_offset = $new_gen_doc_offset[$i];
-                    $all_same = false;
-                } else if ($gen_doc_cmp < 0) {
-                    $all_same = false;
-                }
-            }
-            $old_biggest_gen_offset = $biggest_gen_offset;
-            if($all_same) {
-                return 1;
             }
-            for($i = 0; $i < $this->num_iterators; $i++) {
-                if($this->genDocOffsetCmp($new_gen_doc_offset[$i],
-                    $biggest_gen_offset) < 0) {
-                    $this->index_bundle_iterators[$i]->advance(
-                        $biggest_gen_offset);
-                    $old_gen_doc_offset[$i] = $new_gen_doc_offset[$i];
-                }
+            $i++;
+            if($i == $this->num_iterators) {
+                $i = 0;
             }
-
-        } while(!$all_same);
+        }
+        return 1;
     }

     /**
diff --git a/lib/index_dictionary.php b/lib/index_dictionary.php
index 72c7d83a5..5af0ebd71 100644
--- a/lib/index_dictionary.php
+++ b/lib/index_dictionary.php
@@ -70,6 +70,7 @@ class IndexDictionary implements CrawlConstants
      */
     var $dir_name;

+    var $hash_name;
     /**
      * Array of file handle for files in the dictionary. Members are used
      * to read files to look up words.
@@ -140,7 +141,7 @@ class IndexDictionary implements CrawlConstants
     function __construct($dir_name)
     {
         $this->dir_name = $dir_name;
-
+        $this->hash_name = crawlHash($dir_name);
         if(!is_dir($this->dir_name)) {
             mkdir($this->dir_name);
             for($i = 0; $i < self::NUM_PREFIX_LETTERS; $i++) {
@@ -459,7 +460,7 @@ class IndexDictionary implements CrawlConstants
      *      generation, first offset, last offset, count or
      *      just a string of the word_info data if $extract is false
      */
-    function getWordInfo($word_id, $raw = false, $extract = true,
+     function getWordInfo($word_id, $raw = false, $extract = true,
         $num_entries = -1) {
         if($raw == false) {
             //get rid of out modified base64 encoding
@@ -512,54 +513,56 @@ class IndexDictionary implements CrawlConstants
         if(!$found) {
             return false;
         }
-        //find first record with word id (linear search but probably not many)
-        $test_loc = $check_loc;
+        //now extract the info
+        $word_string = substr($word_string, IndexShard::WORD_KEY_LEN);
+        if($extract) {
+            $info = array();
+            $info[0]=IndexShard::getWordInfoFromString($word_string, true);
+        } else {
+            $info = $word_string;
+        }
+        //up to first record with word id
+        $test_loc = $check_loc - 1;
         $start_loc = $check_loc;

-        do {
+        while ($test_loc >= $low) {
             $word_string = $this->getDictSubstring($file_num, $start +
                 $test_loc * $word_item_len, $word_item_len);
             if($word_string == "" ) break;
             $id = substr($word_string, 0, IndexShard::WORD_KEY_LEN);
             if(strcmp($word_id, $id) != 0 ) break;
             $start_loc = $test_loc;
-            $test_loc -= 1;
-        } while ($test_loc >=$low);
-
-        if($num_entries < 1) {
-            //find last record with word id (linear search but probably not many)
-            $test_loc = $check_loc;
-            $end_loc = $check_loc;
-            do {
-                $word_string = $this->getDictSubstring($file_num, $start +
-                    $test_loc * $word_item_len, $word_item_len);
-                if($word_string == "" ) break;
-                $id = substr($word_string, 0, IndexShard::WORD_KEY_LEN);
-                if(strcmp($word_id, $id) != 0 ) break;
-                $end_loc = $test_loc;
-                $test_loc += 1;
-            } while ($test_loc <= $high);
-        } else {
-            $end_loc = $start_loc + ($num_entries - 1);
-        }
-        //now extract the info from the range of results we got
-        if($extract) {
-            $info = array();
-        } else {
-            $info = "";
+            $test_loc--;
+            $ws = substr($word_string, IndexShard::WORD_KEY_LEN);
+            if($extract) {
+                $tmp = IndexShard::getWordInfoFromString($ws, true);
+                array_push($info, $tmp);
+            } else {
+                $info = $ws . $info;
+            }
         }
+        //until last record with word id
+
+        $test_loc = $check_loc + 1;

-        for($i = $start_loc; $i <=$end_loc; $i++) {
-            $word_string = substr($this->getDictSubstring($file_num, $start +
-                $i * $word_item_len, $word_item_len), IndexShard::WORD_KEY_LEN);
+        if($num_entries > 0) {
+            $high = $start_loc + ($num_entries - 1);
+        }
+        while ($test_loc <= $high) {
+            $word_string = $this->getDictSubstring($file_num, $start +
+                $test_loc * $word_item_len, $word_item_len);
+            if($word_string == "" ) break;
+            $id = substr($word_string, 0, IndexShard::WORD_KEY_LEN);
+            if($num_entries < 1 && strcmp($word_id, $id) != 0 ) break;
+            $test_loc++;
+            $ws = substr($word_string, IndexShard::WORD_KEY_LEN);
             if($extract) {
-                $tmp = IndexShard::getWordInfoFromString($word_string, true);
+                $tmp = IndexShard::getWordInfoFromString($ws, true);
                 array_unshift($info, $tmp);
             } else {
-                $info .= $word_string;
+                $info .= $ws;
             }
         }
-
         return $info;
     }

@@ -646,7 +649,7 @@ class IndexDictionary implements CrawlConstants
             2 * $word_data_len  + $posting_len,
             $word_key_len);
         $item[self::IS_DOC] = true;
-
+
         return $item;
     }

@@ -673,7 +676,6 @@ class IndexDictionary implements CrawlConstants
             $substring .= substr($data, $start_loc);
             $start_loc = 0;
         } while (strlen($substring) < $len);
-
         return substr($substring, 0, $len);
     }

@@ -689,16 +691,10 @@ class IndexDictionary implements CrawlConstants
      */
     function &readBlockDictAtOffset($file_num, $bytes)
     {
-        global $MEMCACHE;
         $false = false;
         if(isset($this->blocks[$file_num][$bytes])) {
             return $this->blocks[$file_num][$bytes];
-        } else if (!defined("NO_CACHE") && USE_MEMCACHE &&
-            ($this->blocks[$file_num][$bytes] =
-            $MEMCACHE->get("Dict:$file_num:$bytes:".$this->dir_name)) != false){
-            return $this->blocks[$file_num][$bytes];
         }
-
         if(!isset($this->fhs[$file_num]) || $this->fhs[$file_num] === NULL) {
             $this->fhs[$file_num] = fopen($this->dir_name.
                 "/$file_num/".$this->max_tier."A.dic", "rb");
@@ -716,11 +712,10 @@ class IndexDictionary implements CrawlConstants
         }
         $this->blocks[$file_num][$bytes] = fread($this->fhs[$file_num],
             self::DICT_BLOCK_SIZE);
-        if(!defined("NO_CACHE") && USE_MEMCACHE) {
-            $MEMCACHE->set("Dict:$file_num:$bytes:".$this->dir_name,
-                $this->blocks[$file_num][$bytes]);
-        }
+
         return $this->blocks[$file_num][$bytes];
     }
+
+
 }
  ?>
diff --git a/lib/index_shard.php b/lib/index_shard.php
index 2b30b911e..79ca0e7ce 100644
--- a/lib/index_shard.php
+++ b/lib/index_shard.php
@@ -78,7 +78,8 @@ require_once  BASE_DIR.'/lib/crawl_constants.php';
  * @subpackage library
  */

-class IndexShard extends PersistentStructure implements CrawlConstants
+class IndexShard extends PersistentStructure implements
+    CrawlConstants
 {
     /**
      * Stores document id's and links to documents id's together with
@@ -313,6 +314,7 @@ class IndexShard extends PersistentStructure implements CrawlConstants
         $read_only_from_disk = false)
     {
         parent::__construct($fname, -1);
+        $this->hash_name = crawlHash($fname);
         $this->generation = $generation;
         $this->num_docs_per_generation = $num_docs_per_generation;
         $this->word_docs = "";
@@ -711,27 +713,35 @@ class IndexShard extends PersistentStructure implements CrawlConstants
      *
      *  @return string the substring of word_docs corresponding to the posting
      */
-    function getPostingAtOffset($current, &$posting_start, &$posting_end)
+    function getPostingAtOffset($current, &$posting_start, &$posting_end,
+        $just_start = false)
     {
             $posting = $this->getWordDocsSubstring($current * self::POSTING_LEN,
                 self::POSTING_LEN);
             $posting_start = $current;
             $posting_end = $current;
             $end_word_start = 0;
-            $first_time = ((ord($posting[0]) & 192) == 64);
-            while ($first_time || (ord($posting[0]) & 192) == 128) {
+            $chr = (ord($posting[0]) & 192);
+            $first_time = ( $chr == 64);
+            while ($chr == 128 || $first_time ){
                 $first_time = false;
                 $posting_start--;
                 $posting = $this->getWordDocsSubstring(
-                    $posting_start*self::POSTING_LEN, self::POSTING_LEN) .
+                    $posting_start * self::POSTING_LEN, self::POSTING_LEN) .
                     $posting;
+                $chr = (ord($posting[0]) & 192);
                 $end_word_start += self::POSTING_LEN;
             }
-            while((ord($posting[$end_word_start]) & 192) > 64) {
+            if($just_start) {
+                return $posting;
+            }
+            $chr = ord($posting[$end_word_start]) & 192;
+            while($chr > 64) {
                 $posting_end++;
                 $posting .= $this->getWordDocsSubstring(
                     $posting_end*self::POSTING_LEN, self::POSTING_LEN);
                 $end_word_start += self::POSTING_LEN;
+                $chr = ord($posting[$end_word_start]) & 192;
             }

             return $posting;
@@ -760,25 +770,14 @@ class IndexShard extends PersistentStructure implements CrawlConstants
         $high = $end;
         $posting_start = $current;
         $posting_end = $current;
-        $stride = 1;
+        $stride = 32;
         $gallop_phase = true;
-
         do {
             $offset = 0;
             $posting = $this->getPostingAtOffset(
-                $current, $posting_start, $posting_end);
-            list($post_doc_index, ) = $this->unpackPosting($posting, $offset);
-            if($doc_index == $post_doc_index) {
-                return $posting_start * self::POSTING_LEN;
-            } else if($doc_index < $post_doc_index) {
-                if($low == $current) {
-                    return $posting_start * self::POSTING_LEN;
-                } else if($gallop_phase) {
-                    $gallop_phase = false;
-                }
-                $high = $current;
-                $current = (($low + $high) >> 1);
-            } else {
+                $current, $posting_start, $posting_end, true);
+            $post_doc_index = $this->getDocIndexPosting($posting);
+            if($doc_index > $post_doc_index) {
                 $low = $current;
                 if($gallop_phase) {
                     $current += $stride;
@@ -796,6 +795,16 @@ class IndexShard extends PersistentStructure implements CrawlConstants
                     }
                     $current = (($low + $high) >> 1);
                 }
+            } else if($doc_index < $post_doc_index) {
+                if($low == $current) {
+                    return $posting_start * self::POSTING_LEN;
+                } else if($gallop_phase) {
+                    $gallop_phase = false;
+                }
+                $high = $current;
+                $current = (($low + $high) >> 1);
+            } else  {
+                return $posting_start * self::POSTING_LEN;
             }

         } while($current <= $end);
@@ -813,9 +822,8 @@ class IndexShard extends PersistentStructure implements CrawlConstants
     function docOffsetFromPostingOffset($offset) {
         $current = $offset / self::POSTING_LEN;
         $posting = $this->getPostingAtOffset(
-            $current, $posting_start, $posting_end);
-        $str_offset = 0;
-        list($doc_index, ) = $this->unpackPosting($posting, $str_offset);
+            $current, $posting_start, $posting_end, true);
+        $doc_index = $this->getDocIndexPosting($posting);

         return ($doc_index << 4);
     }
@@ -862,11 +870,12 @@ class IndexShard extends PersistentStructure implements CrawlConstants

         $this->doc_infos .= $index_shard->doc_infos;

+        $two_doc_len = 2 * self::DOC_KEY_LEN;
         foreach($index_shard->words as $word_id => $postings) {
             $postings_len = strlen($postings);
             // update doc offsets for newly added docs
             $add_len_flag = false;
-            if($postings_len != 2* self::DOC_KEY_LEN ||
+            if($postings_len !=  $two_doc_len ||
                 substr($postings, 0, self::POSTING_LEN) != self::HALF_BLANK) {
                 $offset = 0;
                 $new_postings = "";
@@ -1195,6 +1204,7 @@ class IndexShard extends PersistentStructure implements CrawlConstants
         $total_out = "";
         $word_postings_len = strlen($this->word_postings);
         $pos = 0;
+        $two_doc_len = 2 * self::DOC_KEY_LEN;
         while($pos < $word_postings_len) {
             $word_id = substr($this->word_postings, $pos, $key_len);
             $len = unpackInt(substr($this->word_postings,
@@ -1206,7 +1216,7 @@ class IndexShard extends PersistentStructure implements CrawlConstants
                 we pack generation info to make it easier to build the global
                 dictionary
             */
-            if($len != 2* self::DOC_KEY_LEN ||
+            if($len != $two_doc_len ||
                 substr($postings, 0, self::POSTING_LEN) != self::HALF_BLANK) {
                 $out = packInt($this->generation)
                     . packInt($this->word_docs_len)
@@ -1245,6 +1255,7 @@ class IndexShard extends PersistentStructure implements CrawlConstants
         $pos = 0;
         $tmp_string = "";
         $tmp_len = 0;
+        $two_doc_len = 2 * self::DOC_KEY_LEN;
         while($pos < $word_postings_len) {
             $word_id = substr($this->word_postings, $pos, $key_len);
             $len = unpackInt(substr($this->word_postings,
@@ -1253,7 +1264,7 @@ class IndexShard extends PersistentStructure implements CrawlConstants
                 $pos + $key_len + $posting_len, $len);
             $pos += $key_len + $posting_len + $len;

-            if($len != 2* self::DOC_KEY_LEN ||
+            if($len != $two_doc_len ||
                 substr($postings, 0, self::POSTING_LEN) != self::HALF_BLANK) {
                 if($fh != NULL) {
                     if($tmp_len < self::SHARD_BLOCK_SIZE) {
@@ -1402,6 +1413,23 @@ class IndexShard extends PersistentStructure implements CrawlConstants
         return array($doc_index, $position_list);
     }

+    static function getDocIndexPosting($posting)
+    {
+        $delta_list = unpackListModified9(substr($posting, 0, 4));
+        $doc_index = array_shift($delta_list);
+
+        if(($doc_index & (2 << 26)) > 0) {
+            $delta0 = ($doc_index & ((2 << 9) - 1));
+            array_unshift($delta_list, $delta0);
+            $doc_index -= $delta0;
+            $doc_index -= (2 << 26);
+            $doc_index >>= 9;
+        } else {
+            $doc_index--;
+        }
+        return $doc_index;
+    }
+
     /**
      * Converts $str into 3 ints for a first offset into word_docs,
      * a last offset into word_docs, and a count of number of docs
@@ -1455,7 +1483,8 @@ class IndexShard extends PersistentStructure implements CrawlConstants
     function getDocInfoSubstring($offset, $len)
     {
         if($this->read_only_from_disk) {
-            $base_offset = $this->file_len - $this->docids_len;
+            $base_offset = self::HEADER_LENGTH +
+                $this->prefixes_len + $this->words_len + $this->word_docs_len;

             return $this->getShardSubstring($base_offset + $offset, $len);
         }
@@ -1495,22 +1524,16 @@ class IndexShard extends PersistentStructure implements CrawlConstants
      */
     function &readBlockShardAtOffset($bytes)
     {
-        global $MEMCACHE;
         $false = false;
         if(isset($this->blocks[$bytes])) {
             return $this->blocks[$bytes];
-        } else if (!defined("NO_CACHE") && USE_MEMCACHE &&
-            ($this->blocks[$bytes] =
-            $MEMCACHE->get("Block$bytes:".$this->filename)) != false) {
-            return $this->blocks[$bytes];
-        }
+        }
         if($this->fh === NULL) {
             $this->fh = fopen($this->filename, "rb");
             if($this->fh === false) return false;
             $this->file_len = filesize($this->filename);
         }
         if($bytes >= $this->file_len) {
-
             return $false;
         }
         $seek = fseek($this->fh, $bytes, SEEK_SET);
@@ -1518,10 +1541,7 @@ class IndexShard extends PersistentStructure implements CrawlConstants
             return $false;
         }
         $this->blocks[$bytes] = fread($this->fh, self::SHARD_BLOCK_SIZE);
-        if(!defined("NO_CACHE") && USE_MEMCACHE) {
-            $MEMCACHE->set("Block$bytes:".$this->filename,
-                $this->blocks[$bytes]);
-        }
+
         return $this->blocks[$bytes];
     }

@@ -1539,7 +1559,8 @@ class IndexShard extends PersistentStructure implements CrawlConstants
         self::headerToShardFields($header, $this);
     }

-
+
+
     /**
      *  Load an IndexShard from a file or string
      *
@@ -1548,7 +1569,7 @@ class IndexShard extends PersistentStructure implements CrawlConstants
      *      then the data is loaded from the $fname if possible
      *  @return object the IndexShard loaded
      */
-    public static function load($fname, &$data = NULL)
+    static function load($fname, &$data = NULL)
     {
         $shard = new IndexShard($fname);
         if($data === NULL) {
diff --git a/lib/web_archive_bundle.php b/lib/web_archive_bundle.php
index c5880bfee..e01e3f45b 100755
--- a/lib/web_archive_bundle.php
+++ b/lib/web_archive_bundle.php
@@ -215,23 +215,11 @@ class WebArchiveBundle
      */
     function getPage($offset, $partition, $file_handle = NULL)
     {
-        global $MEMCACHE;
-        if(USE_MEMCACHE) {
-            if(($page =
-                $MEMCACHE->get("Page$offset$partition".$this->dir_name) ) !==
-                false) {
-                return $page;
-            }
-        }
         $page_array =
             $this->getPartition($partition)->getObjects(
                 $offset, 1, true, $file_handle);

         if(isset($page_array[0][1])) {
-            if(USE_MEMCACHE) {
-                $MEMCACHE->set("Page$offset$partition".$this->dir_name,
-                    $page_array[0][1]);
-            }
             return $page_array[0][1];
         } else {
             return array();
diff --git a/locale/ar/configure.ini b/locale/ar/configure.ini
index f28541ef4..50ecc685e 100755
--- a/locale/ar/configure.ini
+++ b/locale/ar/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/de/configure.ini b/locale/de/configure.ini
index 4b7e662d3..e5b18a11d 100755
--- a/locale/de/configure.ini
+++ b/locale/de/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/en-US/configure.ini b/locale/en-US/configure.ini
index 9eff87487..6d91dfc05 100755
--- a/locale/en-US/configure.ini
+++ b/locale/en-US/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = "Description:"
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = "Starting New Crawl..."
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = "Stop Crawl"
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = "Closing Crawl Dictionary..."
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = "Running Post Processing Plugins..."
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = "Stop Crawl"
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = "No active crawl"
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = "Time started:"
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = "No start time found"
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = "Server Peak Memory:"
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = "No Memory Data Yet"
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = "Fetcher Peak Memory:"
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = "No Memory Data Yet"
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = "Web App Peak Memory:"
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = "No Memory Data Yet"
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = "Visited Urls Count:"
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = "Total Urls Seen:"
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = "Most Recent Fetcher:"
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = "No Fetcher Queries Yet"
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = "Most Recent Urls"
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = "No Recent Urls"
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = "Previous Crawls"
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = "Description:"
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = "Timestamp:"
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = "Visited/Extracted Urls:"
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = "Actions"
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = "Resume"
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = "Set as Index"
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = "Search Index"
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = "Delete"
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = "No Previous Crawls"
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/en-US/statistics.txt b/locale/en-US/statistics.txt
index b6bef56f0..5a165df53 100755
--- a/locale/en-US/statistics.txt
+++ b/locale/en-US/statistics.txt
@@ -1 +1 @@
-d:99;
\ No newline at end of file
+d:100;
\ No newline at end of file
diff --git a/locale/es/configure.ini b/locale/es/configure.ini
index 54ee0f7d1..c4edd77b6 100755
--- a/locale/es/configure.ini
+++ b/locale/es/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/fr-FR/configure.ini b/locale/fr-FR/configure.ini
index 3942ca595..3d2ed024d 100755
--- a/locale/fr-FR/configure.ini
+++ b/locale/fr-FR/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/he/configure.ini b/locale/he/configure.ini
index 27e015898..01cf093eb 100755
--- a/locale/he/configure.ini
+++ b/locale/he/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/in-ID/configure.ini b/locale/in-ID/configure.ini
index 61d0f8959..b53e75639 100755
--- a/locale/in-ID/configure.ini
+++ b/locale/in-ID/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/it/configure.ini b/locale/it/configure.ini
index 21e6ff48b..7d8be1a3b 100755
--- a/locale/it/configure.ini
+++ b/locale/it/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/ja/configure.ini b/locale/ja/configure.ini
index 28c372a11..d41f9471a 100755
--- a/locale/ja/configure.ini
+++ b/locale/ja/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = "説明"
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = "検索の停止"
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = "検索の停止"
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = "検索は続いていません。"
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = "始まった時の時間"
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = "検索始まった時間は見つけない"
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = "全部URL"
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = "最新フェッチャ"
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = "フェッチャキュエリはまだありません"
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = "最新URL"
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = "最近URLはありません"
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = "さっきの検索"
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = "説明"
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = "アクション"
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = "再会"
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = "指数の設定する。"
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = "削除"
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = "さっきの検索はありません"
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/ko/configure.ini b/locale/ko/configure.ini
index c6c3a3ff3..d11e6fa57 100755
--- a/locale/ko/configure.ini
+++ b/locale/ko/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = "설명:"
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = "크롤을 중지합니다.  잠시만 기다려 주십시요."
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = "크롤을 중지합니다.  잠시만 기다려 주십시요."
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = "활동하는 크롤이 존재하지 않습니다."
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = "시작한 시간:"
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = "시작 시간이 존재하지 않습니다."
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = "방문한 주소들 합계:"
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = "지금까지 본 총 합계 주소들:"
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = "현재까지 본 주소들 합계: "
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = "아직 호출 퀘리가 없습니다."
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = "가장 최근 주소들"
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = "최근 주소들이 없습니다."
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = "예전 크롤들 "
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = "설명:"
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = "타임 스탬프:"
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = "방문한 또는 추출한 주소들"
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = "활동들:"
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = "재개"
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = "인덱스로 정하기"
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = "삭제"
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = "전 크롤들이 없습니다."
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/pl/configure.ini b/locale/pl/configure.ini
index 77b8e2a2f..1976673d7 100755
--- a/locale/pl/configure.ini
+++ b/locale/pl/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/pt/configure.ini b/locale/pt/configure.ini
index 1086c2a24..dd500681c 100755
--- a/locale/pt/configure.ini
+++ b/locale/pt/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/ru/configure.ini b/locale/ru/configure.ini
index 1342bb326..1417bd333 100755
--- a/locale/ru/configure.ini
+++ b/locale/ru/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/th/configure.ini b/locale/th/configure.ini
index abac16eef..363197809 100755
--- a/locale/th/configure.ini
+++ b/locale/th/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/vi-VN/configure.ini b/locale/vi-VN/configure.ini
index 547256e4b..c92edef35 100755
--- a/locale/vi-VN/configure.ini
+++ b/locale/vi-VN/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = "M&ocirc; tả:"
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = "Thời gian bắt đầu:"
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = "Kh&ocirc;ng t&igrave;m thấy thời gian bắt đầu"
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = "M&ocirc; tả:"
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = "Những h&agrave;nh động:"
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = "Bắt đầu trở lại"
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = "C&agrave;i l&agrave;m mục lục"
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = "Xo&aacute;"
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/locale/zh-CN/configure.ini b/locale/zh-CN/configure.ini
index 9fa2ff074..0d6bbe0c6 100755
--- a/locale/zh-CN/configure.ini
+++ b/locale/zh-CN/configure.ini
@@ -324,88 +324,91 @@ crawlstatus_view_description = ""
 ; crawlstatus_view.php line: 66
 crawlstatus_view_starting_crawl = ""
 ;
-; crawlstatus_view.php line: 69
+; crawlstatus_view.php line: 70
+managecrawls_element_stop_crawl = ""
+;
+; crawlstatus_view.php line: 74
 crawlstatus_view_closing_dict = ""
 ;
-; crawlstatus_view.php line: 72
+; crawlstatus_view.php line: 77
 crawlstatus_view_run_plugins = ""
 ;
-; crawlstatus_view.php line: 80
+; crawlstatus_view.php line: 85
 managecrawls_element_stop_crawl = ""
 ;
-; crawlstatus_view.php line: 85
+; crawlstatus_view.php line: 90
 crawlstatus_view_no_description = ""
 ;
-; crawlstatus_view.php line: 88
+; crawlstatus_view.php line: 93
 crawlstatus_view_time_started = ""
 ;
-; crawlstatus_view.php line: 91
+; crawlstatus_view.php line: 96
 crawlstatus_view_no_crawl_time = ""
 ;
-; crawlstatus_view.php line: 92
+; crawlstatus_view.php line: 97
 crawlstatus_view_queue_memory = ""
 ;
-; crawlstatus_view.php line: 97
+; crawlstatus_view.php line: 102
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 100
+; crawlstatus_view.php line: 105
 crawlstatus_view_fetcher_memory = ""
 ;
-; crawlstatus_view.php line: 105
+; crawlstatus_view.php line: 110
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 108
+; crawlstatus_view.php line: 113
 crawlstatus_view_webapp_memory = ""
 ;
-; crawlstatus_view.php line: 113
+; crawlstatus_view.php line: 118
 crawlstatus_view_no_mem_data = ""
 ;
-; crawlstatus_view.php line: 116
+; crawlstatus_view.php line: 121
 crawlstatus_view_visited_urls = ""
 ;
-; crawlstatus_view.php line: 120
+; crawlstatus_view.php line: 125
 crawlstatus_view_total_urls = ""
 ;
-; crawlstatus_view.php line: 123
+; crawlstatus_view.php line: 128
 crawlstatus_view_most_recent_fetcher = ""
 ;
-; crawlstatus_view.php line: 129
+; crawlstatus_view.php line: 134
 crawlstatus_view_no_fetcher = ""
 ;
-; crawlstatus_view.php line: 133
+; crawlstatus_view.php line: 138
 crawlstatus_view_most_recent_urls = ""
 ;
-; crawlstatus_view.php line: 141
+; crawlstatus_view.php line: 146
 crawlstatus_view_no_recent_urls = ""
 ;
-; crawlstatus_view.php line: 145
+; crawlstatus_view.php line: 150
 crawlstatus_view_previous_crawls = ""
 ;
-; crawlstatus_view.php line: 151
+; crawlstatus_view.php line: 156
 crawlstatus_view_description = ""
 ;
-; crawlstatus_view.php line: 152
+; crawlstatus_view.php line: 157
 crawlstatus_view_timestamp = ""
 ;
-; crawlstatus_view.php line: 153
+; crawlstatus_view.php line: 158
 crawlstatus_view_url_counts = ""
 ;
-; crawlstatus_view.php line: 154
+; crawlstatus_view.php line: 159
 crawlstatus_view_actions = ""
 ;
-; crawlstatus_view.php line: 167
+; crawlstatus_view.php line: 172
 crawlstatus_view_resume = ""
 ;
-; crawlstatus_view.php line: 173
+; crawlstatus_view.php line: 178
 crawlstatus_view_set_index = ""
 ;
-; crawlstatus_view.php line: 176
+; crawlstatus_view.php line: 181
 crawlstatus_view_search_index = ""
 ;
-; crawlstatus_view.php line: 183
+; crawlstatus_view.php line: 188
 crawlstatus_view_delete = ""
 ;
-; crawlstatus_view.php line: 190
+; crawlstatus_view.php line: 195
 crawlstatus_view_no_previous_crawl = ""
 ;
 ; /Applications/XAMPP/xamppfiles/htdocs/git/yioop//views/elements
diff --git a/views/settings_view.php b/views/settings_view.php
index 9629f56e3..e5277097b 100755
--- a/views/settings_view.php
+++ b/views/settings_view.php
@@ -111,6 +111,7 @@ class SettingsView extends View
     e(tl('setting_install_search_plugin'));
 ?></a>.</div>
 </div>
+<div class='landing-spacer'></div>
 <?php
     }
 }
diff --git a/views/signin_view.php b/views/signin_view.php
index 784e14fc7..118ce40f9 100755
--- a/views/signin_view.php
+++ b/views/signin_view.php
@@ -62,7 +62,7 @@ class SigninView extends View
     <h1 class="logo"><a href="./?YIOOP_TOKEN=<?php
         e($data['YIOOP_TOKEN'])?>"><img src="resources/yioop.png" alt="Yioop!"
         /></a><span> - <?php e(tl('signin_view_signin')); ?></span></h1>
-<form class="user_settings" method="post" action="">
+<form class="user_settings" method="post" action="#">
 <div class="login">
     <table>
     <tr>
@@ -91,6 +91,8 @@ class SigninView extends View
 <div class="signin-exit"><a href="."><?php
     e(tl('signin_view_return_yioop')); ?></a></div>
 </div>
+
+<div class='landing-spacer'></div>
 <?php
     }
 }
ViewGit