diff --git a/app/assets/javascripts/application/search.js b/app/assets/javascripts/application/search.js
index 4e7bfdf1e63cc9b03acf68ef9101e07da26a89ab..d6636b18e48bb20eb31c5441a1dc70477bad97c0 100644
--- a/app/assets/javascripts/application/search.js
+++ b/app/assets/javascripts/application/search.js
@@ -98,7 +98,7 @@ var search = function() {
         switch(action) {
           case 'add':
             // remove previous element if type is a single value only
-            var single_params = ['query', 'order'];
+            var single_params = ['query', 'order', 'year'];
             var index = single_params.indexOf(type);
             if (index > -1) {
                 $.each($('.filter-panel').tagsinput('items'), function (i, v) {
@@ -117,6 +117,7 @@ var search = function() {
         }
 
         // sidebar
+        // set values from params
         switch(type) {
           // search input
           case 'query':
@@ -147,6 +148,18 @@ var search = function() {
           case 'school_year':
             watchCheckbox('school_year', 'filter-school-year', true);
             break;
+          case 'year':
+            var year = params.get('year').split('-');
+            if (year.length === 1){
+              $("#filter-year input[value=single]").prop('checked',true);
+              $("#filter-year input[name=singleYear]").val(year[0]);
+            }
+            else{
+              $("#filter-year input[value=range]").prop('checked',true);
+              $("#filter-year input[name=startYear]").val(year[0]);
+              $("#filter-year input[name=endYear]").val(year[1]);
+            }
+            break;
         }
       });
     }
@@ -183,6 +196,36 @@ var search = function() {
       watchFilterSubject();
       watchCheckbox('type', 'filter-type');
       watchCheckbox('school_year', 'filter-school-year');
+      watchFilterYear();
+      watchFilterRegex();
+    }
+
+    function watchFilterYear(){
+      $('#filter-year button').on('click', function(event){
+        event.preventDefault();
+        value = $('#filter-year input[name=year]:checked').val();
+        switch (value) {
+          case "single":
+            params.add('year', $('#filter-year input[name=singleYear]').val());
+            break;
+          case "range":
+            start_year = $('#filter-year input[name=startYear]').val();
+            end_year = $('#filter-year input[name=endYear]').val();
+            params.add('year', start_year + '-' + end_year);
+            break;
+        }
+        filtersFetchInterval();
+      });
+    }
+
+    function watchFilterRegex() {
+      $('.regex-submit').on('click', function (event) {
+        event.preventDefault();
+        $.each(['all','exact','any','none'], function(index, value){
+          params.add('regex_' + value, $(".regex input[name="+value+"]").val())
+        });
+        filtersFetchInterval();
+      });
     }
 
     function watchFilterSubject() {
@@ -290,7 +333,11 @@ var searchParameters = function() {
     subject: [],
     type: [],
     school_year: [],
-    year: ""
+    year: "",
+    regex_all: "",
+    regex_exact: "",
+    regex_any: "",
+    regex_none: ""
   }
   // clone default_params
   var params = JSON.parse(JSON.stringify(default_params));
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 1e8eafc413ce8cb150f014e9ac573c3ec61bc4ca..3b604e8690fc23615c1c3ba9f12d055674fe51dd 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -10,6 +10,7 @@ class SearchController < ApplicationController
     params[:subject]= params[:subject].split(', ')
     params[:type] = params[:type].split(', ')
     params[:school_year] = params[:school_year].split(', ')
+    params[:year] = params[:year].split('-').take(2)
     page=1
     if (params[:page])
       page = params[:page].to_i
diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb
index 77a56e3d1be7150deffd5e156cd6ac5df2b16dfb..702f1d4523653abd7818a8b6343745741fd8086a 100644
--- a/app/repositories/orient_db/learning_object_repository.rb
+++ b/app/repositories/orient_db/learning_object_repository.rb
@@ -164,6 +164,7 @@ module OrientDb
 
         query = "SELECT EXPAND(rid) FROM index:learningobject_search WHERE key LUCENE '#{qry}'"
         query = "SELECT * FROM (" + query + ") WHERE " + fetch_types(params[:type]) unless params[:type].blank?
+        query = "SELECT * FROM (" + query + ") WHERE " + fetch_year(params[:year]) unless params[:year].blank?
         query = "SELECT * FROM (" + query + ") ORDER BY #{order}" unless order.nil?
         query = "SELECT @rid.asString(), last_modified FROM (" + query + ")"
         learning_objects_hash = connection.query query, limit: 10000
@@ -191,6 +192,17 @@ module OrientDb
       hash
     end
 
+    def fetch_year(years)
+      if years.size() == 1
+        year = years[0]
+        qry = "created_at.format('yyyy') = '#{year}'"
+      elsif years.size() == 2
+        begin_year = years[0]
+        end_year = years[1]
+        qry = "created_at.format('yyyy') >= '#{begin_year}' AND created_at.format('yyyy') <= '#{end_year}'"
+      end
+    end
+
     def fetch_types(types)
       qry = ''
       types.each do |type|
diff --git a/app/views/search/index.html.erb b/app/views/search/index.html.erb
index 796b7fa4d399d3d2ee7a984344d3aafec7500f15..4bb5d880f82b47a6fd9675116aa3c3da766f3161 100644
--- a/app/views/search/index.html.erb
+++ b/app/views/search/index.html.erb
@@ -210,42 +210,42 @@
       <h3 class="dropdown">Ano de Publicação<span class="caret caret-align-right"/></h3>
 
       <div class="dropdown-element">
-        <form>
+        <form id="filter-year">
           <input type="radio" name="year" value="single" checked>Ano:<br/>
           <input type="text" name="singleYear" size="8">
           <br/>
           <input type="radio" name="year" value="range">Intervalo:<br/>
           <input type="text" name="startYear" size="8"> - <input type="text" name="endYear" size="8">
-          <a onclick="getYearFilter()">Ano</a>
+          <br/><br/>
+          <button type="submit" class="btn btn-default">Pesquisar</button>
         </form>
       </div>
       <h3 class="dropdown">Pesquisa Avançada<span class="caret caret-align-right"/></h3>
 
-      <form method="get">
+      <form method="get" class="regex">
         <div class="dropdown-element">
           <table style="width:100%">
             <tr>
               <td>Todas estas palavras:</td>
-              <td><input type="text" name="All" ></td>
+              <td><input type="text" name="all" ></td>
             </tr>
             <tr>
               <td>A frase exata:</td>
-              <td><input type="text" name="Exact" ></td>
+              <td><input type="text" name="exact" ></td>
             </tr>
             <tr>
               <td>Qualquer uma destas palavras:</td>
-              <td><input type="text" name="Any"></td>
+              <td><input type="text" name="any"></td>
             </tr>
             <tr>
               <td>Nenhuma destas palavras:</td>
-              <td><input type="text" name="None"></td>
+              <td><input type="text" name="none"></td>
             </tr>
             <tr>
               <td></td>
               <td align="right"><br>
-                <button type="submit" class="btn btn-default">Pesquisar</button>
+                <button type="submit" class="btn btn-default regex-submit">Pesquisar</button>
               </td>
-              <a onclick="getWordsFilter()">Palavras</a>
             </tr>
           </table>
         </div>
@@ -294,6 +294,7 @@
         case 'subject': return 'label label-success';
         case 'type'   : return 'label label-default';
         case 'school_year'     : return 'label label-warning';
+        case 'year'     : return 'label label-info';
       }
     },
     freeInput: false