title: Vue doesn't update when computed data change
body: <p>Context: I have a list of posts with tags, categories from wordpress api. I display these posts with <code>Vue</code> and using <code>computed</code> with a search box to filter the result based on titre, description, tags, and categories</p>
  
  <p>Problem: I am trying to update a <code>computed</code> list when user click on a list of tag available. I add the <code>get</code> and <code>set</code> for <code>computed</code> data like this:</p>
  
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>var vm = new Vue({
      el: '#blogs',       
      data: {
          search: '',
          posts: [],
          filterPosts: []
      },
      beforeMount: function() {
          // It should call the data and update
          callData();
      },
      computed: {
          filterPosts: {
              get: function() {
                  var self = this;
                  return self.posts.filter(function(post){
                      var query = self.search.toLowerCase();
                      var title = post.title.toLowerCase();
                      var content = post.content.toLowerCase();
                      var date = post.date.toLowerCase();
                      var categories = '';
                      post.categories.forEach(function(category) {
                         categories += category.name.toLowerCase(); 
                      });
                      var tags = '';
                      post.tags.forEach(function(tag){
                          tags += tag.name.toLowerCase();
                      });
                      return title.indexOf(query) !== -1 ||content.indexOf(query) !== -1 || date.indexOf(query) !== -1 || categories.indexOf(query) !== -1 || tags.indexOf(query) !== -1;
                  });
              },
              set: function (newValue) {
                  console.log(newValue);
                  this.filterPosts = Object.assign({}, newValue);
              }
          }
      },
      methods: {
          filterByTag: function(tag, event) {
              event.preventDefault();
              var self = this;
              self.filterPosts = self.posts.filter(function(post){
                  var tags = '';
                  post.tags.forEach(function(tag){
                      tags += tag.name.toLowerCase();
                  });
                  return tags.indexOf(tag.toLowerCase()) !== -1;
              });
          }
      }
  }); // Vue instance</code></pre>
  </div>
  </div>
  </p>
  
  <p>The <code>console.log</code> always output new data based on the function I wrote on <code>methods</code> but <code>Vue</code> didn't re-render the view. I think I didn't do the right way or thought like <code>Vue</code>. Could you please give some insight?</p>
  
  <p><strong>Edit 1</strong>
  Add full code.</p>
  
  <p>I tried to add <code>filterPosts</code> in <code>data</code> but I received this error from Vue: <code>The computed property "filterPosts" is already defined in data.</code></p>