code: function _fnFilter( settings, input, force, regex, smart, caseInsensitive )
  	{
  		var rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );
  		var prevSearch = settings.oPreviousSearch.sSearch;
  		var displayMaster = settings.aiDisplayMaster;
  		var display, invalidated, i;
  	
  		// Need to take account of custom filtering functions - always filter
  		if ( DataTable.ext.search.length !== 0 ) {
  			force = true;
  		}
  	
  		// Check if any of the rows were invalidated
  		invalidated = _fnFilterData( settings );
  	
  		// If the input is blank - we just want the full data set
  		if ( input.length <= 0 ) {
  			settings.aiDisplay = displayMaster.slice();
  		}
  		else {
  			// New search - start from the master array
  			if ( invalidated ||
  				 force ||
  				 prevSearch.length > input.length ||
  				 input.indexOf(prevSearch) !== 0 ||
  				 settings.bSorted // On resort, the display master needs to be
  				                  // re-filtered since indexes will have changed
  			) {
  				settings.aiDisplay = displayMaster.slice();
  			}
  	
  			// Search the display array
  			display = settings.aiDisplay;
  	
  			for ( i=display.length-1 ; i>=0 ; i-- ) {
  				if ( ! rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {
  					display.splice( i, 1 );
  				}
  			}
  		}
  	}
docs: Filter the data table based on user input and draw the table
  @param {object} settings dataTables settings object
  @param {string} input string to filter on
  @param {int} force optional - force a research of the master array (1) or not (undefined or 0)
  @param {bool} regex treat as a regular expression or not
  @param {bool} smart perform smart filtering or not
  @param {bool} caseInsensitive Do case insenstive matching or not
  @memberof DataTable#oApi