a) you can update the Database Search server behavior on the results page to set up more advanced searches including multiple word search. You will see a lot of options in that server behavior that cover the scenarios you are looking for.
b) The code has built-in cross site scripting protection that prevents html and script from running when it comes from the database. You can manually override that code wherever you need to by adding a "false" argument in the getColumnVal() method call. It will look something like:
<?php echo($RecordsetName->getColumnVal("column",false)); ?>
instead of:
<?php echo($RecordsetName->getColumnVal("column")); ?>