How to filter product collection by matching string like search in Magento 2?

addSearchFilter does not do much if you don't apply the filter:

public function addSearchFilter($query)
{
    $this->queryText = trim($this->queryText . ' ' . $query);
    return $this;
}

What you need to do is to inject \Magento\Framework\Api\FilterBuilder, \Magento\Framework\Api\Search\SearchCriteriaBuilder as well as \Magento\Search\Api\SearchInterface and do the following:

$this->filterBuilder->setField('search_term');
$this->filterBuilder->setValue('Joust');
$this->searchCriteriaBuilder->addFilter($this->filterBuilder->create());
$searchCriteria = $this->searchCriteriaBuilder->create();
$searchCriteria->setRequestName("search");
$this->searchResult = $this->searchInterface->search($searchCriteria);

It doesn't work how exactly?

The collection results do not change?

If the collection is loaded, than no amount of filtering will have effect on the results.

You would have to clear the collection and load it again:

$collection->clear();
$collection->load();

Or add the filters before it gets loaded.

Is the collection returning no or incorrect results?

Have a look at the addSearchFilter function and check what is content of the queryText

public function addSearchFilter($query)
{
    $this->queryText = trim($this->queryText . ' ' . $query);
    return $this;
}

You can always look directly at the query and see if there are issues:

var_dump($collection->getSelect()->__toString());