I had similar issue when I tried to use curl command with search query, it was giving me proper result and not in Magento listing. Try below code by overriding Block file.
di.xml
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
<preference for="Magento\CatalogSearch\Block\Result" type="Vendor\Module\Block\Result" />
</config>
Result.php
<?php
namespace Vendor\Module\Block;
use Magento\Framework\View\Element\Template;
class Result extends \Magento\CatalogSearch\Block\Result
{
protected function _construct()
{
$this->setModuleName('Magento_CatalogSearch');
parent::_construct();
}
protected function _getProductCollection()
{
if (null === $this->productCollection) {
$this->productCollection = $this->getListBlock()->getLoadedProductCollection();
}
try {
$block = $this->getLayout()->createBlock('Magento\Catalog\Block\Product\ProductList\Toolbar');
$dir = $this->getRequest()->getParam('product_list_dir');
if(!isset($dir)){ $dir = 'DESC'; }
if ($block->getCurrentOrder()) {
switch ($block->getCurrentOrder()) {
case 'relevance':
$this->productCollection->setOrder('relevance', $dir);
break;
case 'name':
$this->productCollection->setOrder('name', $dir);
break;
case 'price':
$this->productCollection->setOrder('price', $dir);
break;
default:
$this->productCollection->setOrder('relevance', $dir);
break;
}
}
return $this->productCollection;
} catch (\Exception $e) {
$this->logger->error('Fault Code: ' . trim($e->getCode()));
$this->logger->error('Fault Reason: ' . trim($e->getMessage()) . "\n");
}
}
}