# File lib/chef/knife/search.rb, line 63
      def run 
        q = Chef::Search::Query.new
        display = { :total => 0, :start => config[:start] ? config[:start] : 0, :rows => [ ] }

        q.search(@name_args[0], @name_args[1], config[:sort], config[:start] ? config[:start] : 0, config[:rows] ? config[:rows] : 20) do |item|
          formatted_item = format_for_display(item)
          if formatted_item.respond_to?(:has_key?) && !formatted_item.has_key?('id')
            formatted_item['id'] = item.has_key?('id') ? item['id'] : item.name 
          end
          display[:rows] << formatted_item
          display[:total] += 1
        end

        if config[:id_only]
          if config[:attribute]
            display[:rows].each do |row|
              puts row[config[:attribute]] if row.has_key?(config[:attribute]) && !row[config[:attribute]].nil?
            end
          else
            puts display[:rows].join("\n") 
          end
        else
          output(display)
        end
      end