1. You have to insert array element in $join_array like
I inserted 2nd element which will be joined later by VM search operation
$join_array = array(
'LEFT JOIN `#__{vm}_product_price` ON `#__{vm}_product`.`product_id` = `#__{vm}_product_price`.`product_id`',
'LEFT JOIN `#__jf_content` ON `jos_jf_content`.`reference_id` = `#__{vm}_product`.`product_id`'
);
2. I added $sq .= "\n (`#__jf_content`.`value` LIKE '%$searchstring%' AND reference_table='vm_product' AND reference_field='product_name') OR "; to get result against product name
for( $keywordArr as $searchstring ) {
$sq .= "\n (`#__{vm}_product`.`product_name` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`product_sku` LIKE '%$searchstring%' OR ";
$sq .= "\n (`#__jf_content`.`value` LIKE '%$searchstring%' AND reference_table='vm_product' AND reference_field='product_name') OR ";
$sq .= "\n `#__{vm}_product`.`product_s_desc` LIKE '%$searchstring%' OR ";
$sq .= "\n `#__{vm}_product`.`product_desc` LIKE '%$searchstring%') ";
if( $i++ < $numKeywords ) {
$sq .= "\n AND ";
}
}